Gradle - Тестирование

Тестовая задача автоматически обнаруживает и выполняет все модульные тесты в исходном наборе тестов. Он также создает отчет после завершения выполнения теста. JUnit и TestNG - это поддерживаемые API.

В тестовом задании есть Test.getDebug(), который можно настроить на запуск, чтобы JVM ожидала отладчика. Перед тем как перейти к выполнению, он устанавливает сообщение отладчика на5005.

Обнаружение теста

В Test Taskопределяет, какие классы являются тестовыми, проверяя скомпилированные тестовые классы. По умолчанию он сканирует все файлы .class. Вы можете настроить собственные включения / исключения, только эти классы будут сканироваться. В зависимости от используемой тестовой среды (JUnit / TestNG) при обнаружении тестового класса используются разные критерии.

При использовании JUnit мы сканируем тестовые классы JUnit 3 и 4. Если любой из следующих критериев соответствует, класс считается тестовым классом JUnit:

  • Класс или суперкласс расширяет TestCase или GroovyTestCase
  • Класс или суперкласс аннотируется @RunWith
  • Класс или суперкласс содержат метод, помеченный @Test
  • При использовании TestNG мы ищем методы, помеченные @Test

Note- Абстрактные классы не выполняются. Gradle также сканирует дерево наследования в файлы jar в пути к тестовым классам.

Если вы не хотите использовать обнаружение тестового класса, вы можете отключить его, установив scanForTestClasses к ложному.

Тестовая группировка

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