JUnit の設定とテストコードの作成
Java プロジェクトにおいて JUnit を使ったユニットテストコードを記述するには、build.gradle
スクリプトに下記のように JUnit 用の設定を行っておきます。
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.+'
}
テスト対象のプロダクトコードとそのテストコードは、下記のようなディレクトリ構成で配置します。
src/main/java/com/example/Sample.java
… プロダクトコードsrc/test/java/com/example/SampleTest.java
… テストコード
package com.example;
public class Sample {
public static int add(int a, int b) {
return a + b;
}
}
package com.example;
import org.junit.Test;
import static org.junit.Assert.*;
public class SampleTest {
@Test
public void testAdd() {
assertEquals(3, Sample.add(1, 2));
}
}
ちなみに、JUnit 4.x 系では上記のようにアノテーションを使って記述しますが、JUnit 3.x までは下記のように TestCase
クラスを継承する形で記述していました。
後方互換性のため、JUnit 4.x を使っている場合でも、下記のように記述することができます。
package com.example;
import junit.framework.TestCase;
public class SampleTest extends TestCase {
public void testAdd() {
assertEquals(3, Sample.add(1, 2));
}
}
テストの実行
テストコードのビルド&実行は、test
タスクにより実行することができます。
$ gradle test
:compileJava
:processResources UP-TO-DATE
:classes
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
BUILD SUCCESSFUL
Total time: 6.226 secs
もちろん、テストに失敗すればエラーが表示されます。
$ gradle -q test
1 test completed, 1 failed
FAILURE: Build failed with an exception.
...
実行結果からも分かるように、test
タスクを実行すると、テストの実行に先立って、プロダクトコードのコンパイル (classes
) とテストコードのコンパイル (testClasses
) が実行されます。
テストが完了すると、下記のようなディレクトリにファイルが出力されます。
build/classes/test/
… コンパイルされたテストクラスbuild/test-results/
… XML 形式のテスト結果(Jenkins などで使用)build/reports/tests/
… HTML 形式のテスト結果(ブラウザでの確認用)
Gradle は HTML 形式で見やすいレポートを出力してくれます。
build/reports/tests/index.html
をブラウザで開けば、詳細なレポートを確認できます。

実行されるテスト
test タスクを実行したときに実行されるテストは下記のようなものです。
@Test
でアノテートされたメソッド(JUnit と TestNG のどちらも認識する)@RunWith
でアノテートされたクラスjunit.framework.TestCase
やgroovy.util.GroovyTestCase
を継承したクラス (JUnit 3.x)
特定のテストクラスだけを実行することもできます。
test.single
というシステムプロパティで、クラス名のパターンを指定して test
タスクを実行することにより、パターンに一致したテストクラスだけが実行されます。
下記の例では、クラス名が LargeTest
で終わるテストクラスだけを実行しています。
$ gradle -Dtest.single=**/*LargeTest test