Skip to content
Latchkey

JUnit vs Spock: JVMテストフレームワークの比較

JUnitは標準のJVMテストフレームワークで、Spockは表現力豊かなBDDスタイルの構文と組み込みのモックを備えたGroovyベースのテスト・仕様フレームワークです。

JUnit(現在はJUnit 5/Jupiter)はデフォルトのJVMテストフレームワークで、巨大なエコシステムとあらゆる場所でのツールサポートを持ちます。SpockはGroovyを介してJVM上で動作し、非常に読みやすいgiven/when/thenの仕様スタイル、強力なdata-drivenテーブル、組み込みのモックを提供しつつ、JUnitのrunnerと互換性を保ちます。

JUnitSpock
言語Java (JVM)Groovy (JVM)
スタイルアノテーションBDD given/when/then
モック外部 (Mockito)組み込み
Data-drivenパラメータ化表現力豊かなデータテーブル
最適な用途標準、幅広いツール読みやすく表現力豊かな仕様

CIでは

どちらもMavenまたはGradleの下で実行され、JUnitのrunnerを介してレポートするため、CI統合、レポート、IDEサポートはどちらでも一級です。SpockはGroovyの依存関係を追加します。標準の経路と最大限のツールにはJUnit、組み込みのモックとデータテーブルを備えた表現力豊かで読みやすい仕様にはSpockを選びましょう。

高速化する

Maven/Gradleの依存関係cacheをcacheし、テストの実行を並列化します。どちらもCI runnerで動作し、高速なmanaged runnerはテストフェーズを短縮します。

結論

最も幅広いツールを備えた標準のJVMフレームワークが欲しいなら: JUnit。表現力豊かなBDDスタイルの仕様、組み込みのモック、データテーブルが欲しいなら: Spock。どちらも問題なく併用できます。構文と読みやすさに対するチームの好みで選びましょう。

関連ガイド