GradleでJUnitテストを実行する方法


95

現在、次のbuild.gradleファイルがあります。

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
}    


このbuild.gradleファイルは、私のリポジトリ用です。すべてのメインファイルはsrc / model /にあり、それぞれのテストはtest / modelにあります。

JUnit 4の依存関係を正しく追加し、tests / modelのフォルダーでそれらのテストを実行するにはどうすればよいですか?

回答:


104

junit 4の依存関係を正しく追加するにはどうすればよいですか?

標準のMaven(または同等の)リポジトリに対して解決していると仮定します。

dependencies {
    ...
    testCompile "junit:junit:4.11"  // Or whatever version
}

テスト/モデルのフォルダーでこれらのテストを実行しますか?

同じ方法でテストソースセットを定義します。

sourceSets {
    ...

    test {
        java {
            srcDirs = ["test/model"]  // Note @Peter's comment below
        }
    }
}

次に、次のようにテストを呼び出します。

./gradlew test

編集:代わりにJUnit 5を使用している場合、完了する必要のある手順がさらにある場合は、このチュートリアルに従ってください


7
srcDirs = ["test/model"]srcDir "test/model"別のディレクトリを追加する一方で、デフォルトのテストソースディレクトリを取り除くため、もう少し正確です。mainソースセットについても同じです。
Peter Niederwieser 2013

47

デフォルトのgradleパッケージ構造でプロジェクトを設定した場合、すなわち:

src/main/java
src/main/resources
src/test/java
src/test/resources

その後、テストを実行するためにsourceSetsを変更する必要はありません。Gradleは、テストクラスとリソースがsrc / testにあることを理解します。その後、Oliverが上記のように実行できます。注意事項:プロパティファイルを設定し、gradleとIDEの両方でテストクラスを実行するときは注意してください。私はEclipseを使用しており、そこからJUnitを実行すると、Eclipseは1つのクラスパス(binディレクトリー)を選択し、gradleは別のクラスパス(ビルド・ディレクトリー)を選択します。これは、リソースファイルを編集し、テストの実行時に変更が反映されていない場合に混乱を招く可能性があります。


2
EclipseビルドファイルをGradleと同じディレクトリにリダイレクトするには(いくつかの苛立たしいエラーを防ぐことができます):プロジェクト->プロパティ-> Javaビルドパス->デフォルトの出力フォルダー:「bin」を「build」に置き換えます。しかし...私の経験では、これはしばしば予期せず、デフォルトの「ビン」に「逆戻り」するという戸惑う癖があるようです。Eclipseにデフォルトで「ビルド」を使用させる方法があるかどうかを知っておくとよいでしょう。
マイクげっ歯類

2
@ mike- rodentが知る限り、EclipseとGradleの同じビルドパスを共有することは明示的にお勧めしません(たとえば、discuss.gradle.org / t /…を参照)
mtraut

よし、立て直した!...そして、同じディレクトリにコンパイルすることで得られるものは何もないと思います。ほとんどの目的で、Eclipseビルダーの機能は単なる検証ツールになります:「おっと、これはx、y、zのためにコンパイルされません」。
マイクげっ歯類

1
@DivDiff私のsrcフォルダー構造は上記と同じ方法で設定されていますが、gradleテストを実行しても何も実行されません。それは私のテストをまったく実行しません。何か案が?
Gaurav 2016

@Gaurav、私はあなたをチャットルームに招待したので、それについてオフラインで話すことができます。
DivDiff 2016年

15

Spring Initializrを使用してプロジェクトを作成した場合、すべてが正しく構成され、実行する必要があるのは実行するだけです...

./gradlew clean test --info
  • --infoテスト出力を表示したくない場合はドロップします。
  • clean最後の変更以降に既に合格したテストを再実行したくない場合はドロップします。

build.gradleSpring Bootでのテストに必要な依存関係...

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

何らかの理由で、テストランナーはこれを通知しませんが、HTMLレポートをで生成しますbuild/reports/tests/test/index.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.