Я новичок в Gradle. Я использую Gradle 1.10 и Ubuntu 13.
Я хочу знать, есть ли какая-нибудь команда для выполнения только одного тестового класса, аналогичного "testonly" в SBT.
Я новичок в Gradle. Я использую Gradle 1.10 и Ubuntu 13.
Я хочу знать, есть ли какая-нибудь команда для выполнения только одного тестового класса, аналогичного "testonly" в SBT.
Для запуска одного тестового класса ответ Airborn хорош.
Используя некоторые параметры командной строки, которые здесь можно найти, вы можете просто сделать что-то вроде этого.
gradle test --tests org.gradle.SomeTest.someSpecificFeature
gradle test --tests *SomeTest.someSpecificFeature
gradle test --tests *SomeSpecificTest
gradle test --tests all.in.specific.package*
gradle test --tests *IntegTest
gradle test --tests *IntegTest*ui*
gradle test --tests *IntegTest.singleMethod
gradle someTestTask --tests *UiTest someOtherTestTask --tests *WebTest*ui
Начиная с версии 1.10 градиента он поддерживает выбор тестов, используя тестовый фильтр. Например,
apply plugin: 'java'
test {
filter {
//specific test method
includeTestsMatching "org.gradle.SomeTest.someSpecificFeature"
//specific test method, use wildcard for packages
includeTestsMatching "*SomeTest.someSpecificFeature"
//specific test class
includeTestsMatching "org.gradle.SomeTest"
//specific test class, wildcard for packages
includeTestsMatching "*.SomeTest"
//all classes in package, recursively
includeTestsMatching "com.gradle.tooling.*"
//all integration tests, by naming convention
includeTestsMatching "*IntegTest"
//only ui tests from integration tests, by some naming convention
includeTestsMatching "*IntegTest*ui"
}
}
Для многопользовательских сред (обычный вариант использования для Android) проверьте этот ответ, поскольку аргумент --tests
будет неподдерживаться, и вы получите сообщение об ошибке.
Вы можете сделать gradle -Dtest.single=ClassUnderTestTest test
, если вы хотите протестировать один класс или использовать regexp, например gradle -Dtest.single=ClassName*Test test
, вы можете найти больше примеров классов фильтрации для тестов по этой ссылке раздел 23.12. Тест
Если у вас есть многомодульный проект:
скажем, что ваша структура модуля
root-module
-> a-module
-> b-module
и тест (testToRun), который вы хотите запустить, находится в b-модуле, с полным путем: com.xyz.b.module.TestClass.testToRun
Как вам интересно запустить тест в b-модуле, поэтому вы должны увидеть задачи, доступные для b-модуля.
./gradlew :b-module:tasks
В приведенной выше команде будут перечислены все задачи в b-модуле с описанием. И в идеальном случае у вас будет задача с именем test для запуска модульных тестов в этом модуле.
./gradlew :b-module:test
Теперь вы достигли точки для запуска всех тестов в b-модуле, наконец, вы можете передать параметр указанной выше задачи для запуска тестов, которые соответствуют определенному шаблону пути
./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun"
Теперь вместо этого, если вы запустите
./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"
Он выполнит тестовую задачу для обоих модулей a и b, что может привести к сбою, поскольку в a-модуле нет ничего соответствующего шаблону.
После долгих размышлений, я работал для меня:
gradle test --tests "abcMyTestFile.mySingleTest"
Обратите внимание, что опция --tests может не работать, если у вас разные варианты (сбой "Неизвестная опция командной строки" --tests "). В этом случае необходимо указать конкретную тестовую задачу (например, "testProdReleaseUnitTest" вместо "теста")
Ниже приведена команда запуска одного тестового класса с использованием gradlew
командной строки gradlew
:
gradlew.bat Connected**your bundleVariant**AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass
Ниже приведен пример запуска класса com.example.TestClass
с вариантом Variant_1
:
gradlew.bat ConnectedVariant_1AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass
В моем случае мои предупреждения компилятора Java Eclipse были установлены слишком высоко, и Eclipse не распознал мой класс как допустимый для выполнения. Обновление настроек моего компилятора устранило проблему. Вы можете прочитать больше об этом здесь: annotation-nonnull-not-be-resolved
Вы должны попытаться добавить звездочки (*) до конца.
Gradle Test --tests "com.abc *"
Запустите один тест под названием MyTest:
./gradlew app:testDebug --tests=com.example.MyTest