2017-02-17 9 views
0

私は新しい統合テストのGroovyプロジェクトを作成し、さまざまなコンポーネントに対してテストをまとめてグループ化できるようにしたいと考えています。たとえば、一部のテストはドッカーイメージに対してのみ有効ですが、その他のテストはローカルで実行されているWebアプリケーションをテストするためのものです。また、テストの結果に関するレポートを取得し、必要に応じてテストを何度も実行することもできます。JUnitテストをGradleでグループ化

答えて

2

JUnitでテストをグループ化する最初の手順は、グループに名前を付けるインタフェースを作成することです。テストクラスに到達できるパッケージでこれを作成します。あなたのテストクラスは、次のようになります場合は

は:今、このように見えるようにしたテストクラスを変更

package com.example.test 

interface DockerTest {} 

package com.example.test.api.get.cert 

import org.junit.experimental.categories.Category 

@Category(DockerTest.class) 
class ByIssuedBeforeTest { 
    //awesome tests 
} 

package com.example.test.api.get.cert 

class ByIssuedBeforeTest { 
    //awesome tests 
} 

次に、このような空のインターフェイスを作成します

クラス全体ではなく個々のテストに注釈を付けることもできます。

は、今すぐあなたのbuild.gradleファイルに:

apply plugin: 'java' 

sourceSets { 
    main { 
     java { 
      srcDirs = ["src/main/java", "src/main/groovy"] 
     } 
    } 
    test { 
     java { 
      srcDirs = ["src/test/java", "src/test/groovy"] 
     } 
    } 
} 

test { 
    outputs.upToDateWhen { false } 
    reports { 
     junitXml.enabled=true 
     html.enabled=true 
    } 
} 

task nondockerTest(type: Test) { 
    outputs.upToDateWhen { false } 
    useJUnit { 
     excludeCategories 'com.example.test.DockerTest' 
    } 
} 

task dockerTest(type: Test) { 
    outputs.upToDateWhen { false } 
    useJUnit { 
     includeCategories 'com.example.test.DockerTest' 
    } 
} 

GradleのためのJavaプラグインを使用すると、テスト・タスクを提供します。テストタスクでは、outputs行を追加して、テストタスクが "UP-TO-DATE"とラベル付けされないようにします。結果をキャッシュする代わりに、常にgraleがタスクを実行するように強制します。

レポートブロックを使用すると、JUnitレポートファイルを作成できます。それらはbuild/reports/testsディレクトリに置かれます。 nonDockerTestを実行した場合は、/ reports/tests/nondockerTest/index.htmlをビルドします。

useJUnitブロックは、テストを実行するためにJUnitを使用し、実行するテストのカテゴリ(includeCategoriesを使用する場合)または実行しないカテゴリ(excludeCategoriesを使用する場合)をGradleに指示します。

gradle testすべてのテストを実行します。

gradle nondockerTest DockerTestカテゴリのように分類されていないテストを実行する。

gradle dockerTest DockerTestカテゴリのラベルが付けられたテストだけを実行します。

これらのタスクのそれぞれは、/build/reports/testsディレクトリにレポートを作成します。

+0

異なるカテゴリのテストで異なるコンパイルの引数や依存関係がある場合、このソリューションはすばやく複雑になると思います。この場合、ソースセットごとに異なるビルドを定義する利点を持つJUnitカテゴリを作成するのと同じ効果を持つソースセットが必要になります。 – vinegarbin

+0

私は代わりとしてソースセットを調べなければならないでしょう。私はそれらがソースとテストフォルダの間だけだと思った。私は、それが互いにテストをさらに分離するために使用できるかどうかはわかりませんでした。 – drusolis

関連する問題