Учебники

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

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

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

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

Тестовое задание определяет, какие классы являются тестовыми, проверяя скомпилированные тестовые классы. По умолчанию он сканирует все файлы .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 )
   }
}

Вы можете использовать следующий синтаксис команды для выполнения некоторого тестового задания.