More Related Content
PDF
PPTX
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで) PPTX
PDF
PDF
Goroutineと channelから はじめるgo言語 PPTX
SPAセキュリティ入門~PHP Conference Japan 2021 PDF
PDF
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性 What's hot
PPTX
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜 PDF
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜 PDF
サーバーサイド Kotlin のテストフレームワーク事情 PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 PDF
建設シミュレータOCSの開発 / OCS・VTC on Unity におけるROS対応機能について PPTX
Beautfiul world of Flutter Testing PPTX
PPTX
GitHub ActionsでiOSのCIを実現しよう PDF
PDF
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き) PPTX
Salesforce integration architecture 20200529 PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011 PDF
PDF
PPTX
TypeScript: Basic Features and Compilation Guide PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版) PDF
PPTX
PDF
More from Recruit Lifestyle Co., Ltd.
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割 PDF
Real-time personalized recommendation using embedding PPTX
分散トレーシングAWS:X-Rayとの上手い付き合い方 PDF
Flutter移行の苦労と、乗り越えた先に得られたもの PDF
リクルートライフスタイルにおける深層学習の活用とGCPでの実現方法 PDF
Jupyter だけで機械学習を実サービス展開できる基盤 PDF
PDF
PDF
PDF
「進化し続けるインフラ」のためのマルチアカウント管理 PDF
リクルートライフスタイル AirシリーズでのUXリサーチ PPTX
データサイエンティストが力を発揮できるアジャイルデータ活用基盤 PDF
PDF
PDF
The Design for Serverless ETL Pipeline データ分析基盤のレガシーなデータロードをサーバレスでフルリプレースするまで道のり PDF
PDF
CTIサービスを支える裏側 〜物理デバイスとの戦い〜 | iOSDC Japan 2020 PDF
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー PDF
Refactoring point of Kotlin application PDF
Spekではじめるユニットテスト
- 1.
- 2.
自己紹介
- Ippei Nawate
-Software Developer
- Android(Java, Kotlin)
- Ruby
- 筑波大学(~ 2016/03)
- リクルートライフスタイル(2016/04~)
- Hotpepper Beauty for Android
- 3.
- 4.
Spek?
- Kotlin製のSpecification Framework
-https://github.com/JetBrains/spek
- v1.1.5
- そろそろv2.0が出そう
- https://github.com/JetBrains/spek/milestone/3
- JetBrains非公式(!)
- JUnit Platform(JUnit 5)上で動作する
- RSpecライクなDSL(describe, on, it ...)を使ってテストケースを記述
- 5.
- 6.
- 7.
- 8.
JUnit 5?
- Nextgeneration of JUnit
- JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
- JUnit Platform
- テスト実行基盤を提供
- TestEngineという仕組みを通じてテストケースの収集と実行を行う
- JUnit Jupiter
- JUnit 5での新しいテストプログラミングモデル (+それを実行するための TestEngine)を提
供
- JUnit Vintage
- JUnit3, 4のテストコードをJUnit Platform上で実行するための TestEngineを提供
- 9.
JUnit 5?
- JUnit3,4上でTestEngineを動かすことも出来る
- テストクラスに@RunWith(JUnitPlatform::class)を指定する
- JUnitPlatform::class == TestRunner
- Androidではこれを使ってSpekを動かす必要がある(*1)
*1: https://github.com/aurae/android-junit5 を使ってJupiter形式のテストを実行することは可
能(ただしSpekと組み合わせることはできない模様 )
- 10.
- 11.
- 12.
Q&A - JUnit4と比較して
Q. TestRule相当のものはあるの?
A. TestLifecycleListenerという仕組みがある。ただし@ClassRuleのような使い方は
できない。
Q. 独自ベースクラス作れる?
A. 作れるけど少し特殊(後述)
Q. カバレッジ測れる?
A. これまで通りJacocoで測れます
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
Spekのハマりどころ - 1.変数のスコープ
- 探索フェーズで例外が起きると無視される
- 警告: TestEngine with ID 'spek' failed to discover tests
- ↑↑が標準エラーに吐かれるだけ
- SpekじゃなくててJUnit 5の仕様(不具合?)っぽい
- https://github.com/junit-team/junit5/issues/242
- https://github.com/junit-team/junit5/issues/750
- 5.1で修正予定らしい
A. 「テストケースが見つかりませんでした」扱いになるから
- 24.
まとめ
- pros
- JUnit4でできてたことは大体できる
- 条件部と検証部が分離されて読みやすい
- ネストさせることで、共通の条件部を自然に書ける
- パラメタライズドテストやりやすい
- cons
- 拡張するのにKotlinの深めの知識が求められる
- 変数のスコープでハマりがち
- JUnit 5自体も枯れきってない感