Тестовое задание автоматически обнаруживает и выполняет все модульные тесты в наборе исходных текстов теста. Он также генерирует отчет после завершения теста. 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 ) } }
Вы можете использовать следующий синтаксис команды для выполнения некоторого тестового задания.