Gradle - Testen

Die Testaufgabe erkennt automatisch alle Komponententests im Testquellensatz und führt sie aus. Es wird auch ein Bericht erstellt, sobald die Testausführung abgeschlossen ist. JUnit und TestNG sind die unterstützten APIs.

Die Testaufgabe bietet a Test.getDebug()Methode, die so eingestellt werden kann, dass die JVM auf einen Debugger wartet. Bevor Sie mit der Ausführung fortfahren, wird der Debugger-Beitrag auf gesetzt5005.

Testerkennung

Das Test TaskErkennt, welche Klassen Testklassen sind, indem die kompilierten Testklassen überprüft werden. Standardmäßig werden alle .class-Dateien gescannt. Sie können benutzerdefinierte Einschlüsse / Ausschlüsse festlegen. Es werden nur diese Klassen gescannt. Abhängig vom verwendeten Testframework (JUnit / TestNG) verwendet die Testklassenerkennung unterschiedliche Kriterien.

Bei Verwendung von JUnit suchen wir nach JUnit 3- und 4-Testklassen. Wenn eines der folgenden Kriterien übereinstimmt, wird die Klasse als JUnit-Testklasse betrachtet.

  • Eine Klasse oder eine Superklasse erweitert TestCase oder GroovyTestCase
  • Klasse oder eine Superklasse wird mit @RunWith kommentiert
  • Eine Klasse oder eine Superklasse enthält eine mit @Test kommentierte Methode
  • Bei Verwendung von TestNG suchen wir nach Methoden, die mit @Test kommentiert sind

Note- Die abstrakten Klassen werden nicht ausgeführt. Gradle scannt auch den Vererbungsbaum in JAR-Dateien im Testklassenpfad.

Wenn Sie die Testklassenerkennung nicht verwenden möchten, können Sie sie durch Festlegen deaktivieren scanForTestClasses zu falsch.

Testgruppierung

JUnit und TestNG ermöglichen ausgefeilte Gruppierungen von Testmethoden. Für die Gruppierung führt JUnit Testklassen und Methoden JUnit 4.8 das Konzept der Kategorien ein. Die Testaufgabe ermöglicht die Angabe der JUnit-Kategorien, die Sie ein- und ausschließen möchten.

Sie können das folgende Codefragment in der Datei build.gradle verwenden, um Testmethoden zu gruppieren.

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

Einschließen und Ausschließen bestimmter Tests

Das Test Klasse hat eine include und excludeMethode. Mit diesen Methoden kann festgelegt werden, welche Tests tatsächlich ausgeführt werden sollen.

Führen Sie nur die enthaltenen Tests aus -

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

Ausgeschlossene Tests überspringen -

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

Die Probe build.gradle Datei wie unten gezeigt zeigt es verschiedene Konfigurationsoptionen.

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 )
   }
}

Sie können die folgende Befehlssyntax verwenden, um eine Testaufgabe auszuführen.

gradle <someTestTask> --debug-jvm