Gradle-testing

提供:Dev Guides
移動先:案内検索

Gradle-テスト

テストタスクは、テストソースセット内のすべてのユニットテストを自動的に検出して実行します。 また、テストの実行が完了するとレポートを生成します。 JUnitおよびTestNGはサポートされているAPIです。

テストタスクには、JVMがデバッガーを待機するように起動するように設定できる* Test.getDebug()メソッドが用意されています。 実行に進む前に、デバッガポストを *5005 に設定します。

テスト検出

*Test Task* は、コンパイルされたテストクラスを検査することにより、どのクラスがテストクラスであるかを検出します。 デフォルトでは、すべての.classファイルをスキャンします。 カスタムの包含/除外を設定できます。これらのクラスのみがスキャンされます。 使用するテストフレームワーク(JUnit/TestNG)に応じて、テストクラスの検出は異なる基準を使用します。

JUnitを使用する場合、JUnit 3と4の両方のテストクラスをスキャンします。 次の基準のいずれかが一致する場合、クラスはJUnitテストクラスであるとみなされます-

  • クラスまたはスーパークラスはTestCaseまたはGroovyTestCaseを拡張します
  • クラスまたはスーパークラスには@RunWithアノテーションが付けられます
  • クラスまたはスーパークラスに@Testアノテーションが付けられたメソッドが含まれている
  • TestNGを使用する場合、@ Testアノテーションが付けられたメソッドをスキャンします

注意-抽象クラスは実行されません。 Gradleはまた、継承ツリーをスキャンして、テストクラスパス上のjarファイルにします。

テストクラスの検出を使用したくない場合は、 scanForTestClasses をfalseに設定することで無効にできます。

テストのグループ化

JUnitとTestNGを使用すると、テストメソッドを高度にグループ化できます。 グループ化のために、JUnitテストクラスとメソッドJUnit 4.8はカテゴリの概念を導入しています。 テストタスクでは、含めるおよび除外するJUnitカテゴリを指定できます。

build.gradleファイルで次のコードスニペットを使用して、テストメソッドをグループ化できます。

test {
   useJUnit {
      includeCategories 'org.gradle.junit.CategoryA'
      excludeCategories 'org.gradle.junit.CategoryB'
   }
}

特定のテストを含めるおよび除外する

*Test* クラスには、 *include* および *exclude* メソッドがあります。 これらのメソッドを使用して、実際に実行するテストを指定できます。

含まれているテストのみを実行します-

test {
   include '**my.package.name/*'
}

除外されたテストをスキップする-

test {
   exclude '**my.package.name/*'
}

以下に示すサンプルの build.gradle ファイルは、さまざまな構成オプションを示しています。

apply plugin: 'java'//adds 'test' task

test {
  //enable TestNG support (default is JUnit)
   useTestNG()

  //set a system property for the test JVM(s)
   systemProperty 'some.prop', 'value'

  //explicitly include or exclude tests
   include 'org/foo/**'
   exclude 'org/boo/**'

  //show standard out and standard error of the test JVM(s) on the console
   testLogging.showStandardStreams = true

  //set heap size for the test JVM(s)
   minHeapSize = "128m"
   maxHeapSize = "512m"

  //set JVM arguments for the test JVM(s)
   jvmArgs '-XX:MaxPermSize=256m'

  //listen to events in the test execution lifecycle
   beforeTest {
      descriptor → logger.lifecycle("Running test: " + descriptor)
   }

  //listen to standard out and standard error of the test JVM(s)
   onOutput {
      descriptor, event → logger.lifecycle
         ("Test: " + descriptor + " produced standard out/err: "
         + event.message )
   }
}

次のコマンド構文を使用して、いくつかのテストタスクを実行できます。

gradle <someTestTask> --debug-jvm