Есть ли способ запустить определенный тестовый модуль Android с помощью Gradle? я пробовал
gradle -Dtest.single=UnitTestName connectedInstrumentTest
но, похоже, запустить все тесты в пакете.
Есть ли способ запустить определенный тестовый модуль Android с помощью Gradle? я пробовал
gradle -Dtest.single=UnitTestName connectedInstrumentTest
но, похоже, запустить все тесты в пакете.
Использование test.single
кажется устаревшим. Новый правильный способ сделать это:
./gradlew :<module>:test --tests <pattern>
где <pattern>
может быть что-то вроде:
com.example.MyTest
для запуска всех методов тестирования в com.example.MyTest*MyTest
, чтобы соответствовать каждому методу в каждом классе, чье имя заканчивается MyTest*.MyTest.myMethod
для запуска определенного тестового метода в классе MyTest в любом пакетеЕсли у вас многопроектная сборка, не забудьте указать путь к модулю перед задачей test
; в противном случае вы получите ошибочное сообщение об ошибке при поиске тестового шаблона в каждом подпроекте.
Ничего из этого не зарегистрировано на сайте Gradle где бы я ни находил.
Образец -D<testTaskName>.single=<TestClass>
, поэтому в вашем примере это должно быть:
gradle -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest
ПРИМЕЧАНИЕ. Этот ответ устарел. Вы должны использовать переключатель
--tests
в последних версиях Gradle. (см. другие ответы для объяснения)
Это работает, если вы используете instrumentationTestRunner
:
./gradlew test -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName'
Использование Gradle 2.10 и Android Gradle плагин 2.0.0-бета2.
Поскольку вы знаете, какой тест вы хотите выполнить, вы, вероятно, знаете, какой модуль/разновидность тоже использовать. Вы можете помочь Gradle, указав точный модуль и задачу Gradle. Итак, если ваш тест находится в модуле app
и вы хотите протестировать debug
версию:
./gradlew app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName'
Начиная с плагина Android gradle 1.1.0-rc1, можно запустить один тестовый класс, используя флаг --tests
, выполнив:
./gradlew app:testDebug --tests=com.example.MyTest
См. Http://tools.android.com/tech-docs/unit-testing-support#TOC-Running-from-Gradle.
Вы должны это проверить.
https://github.com/JCAndKSolutions/android-unit-test
Я сделал проблему в этом репозитории github, и этот парень решил мою проблему и загрузил в maven, поэтому в моем файле build.gradle я использую этот плагин.
Инструкции написаны в его репозитории. вы можете легко следовать за ним.
После использования этого модуля plug-and-unit-test, я могу использовать как
../gradlew -Dtest.single=SomeTest test
или
../gradlew -Dtest.single=SomeTest clean check
Теперь он работает, и я могу запускать только те тесты, которые я хочу
Ответ Erdi не работал у меня, но у меня есть один родитель для всех моих тестовых классов, поэтому я смог это сделать:
public abstract class BaseEspressoTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
//...
@Override
protected void runTest() throws Throwable {
if(getClass().getSimpleName().equals("MyTestClassName")) {
super.runTest();
}
}
//...
}
Выполняется только MyTestClassName
. Мы можем расширить его, чтобы выполнить только конкретный метод тестирования (или методы):
public abstract class BaseEspressoTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
//...
@Override
protected void runTest() throws Throwable {
if("MyTestClassName".equals(getClass().getSimpleName())
&& "testMethodName".equals(getName())) {
super.runTest();
}
}
//...
}
Нельзя забывать указать имя варианта сборки после объявления свойства test
, например
-Dtest<buildVariantName>=<yourTestName>
.
Подобно, если у вас есть тип сборки debug
, который дает вам вариант debug
после компиляции, то если вы хотите запустить тест только для этого варианта сборки, вы должны объявить команду следующим образом:
./gradlew -DtestDebug=UnitTestName testDebug
команда Gradle у меня не работает. Я использовал нижеприведенную команду adb. для этого вам нужно сначала собрать свой apk.
adb shell am tool -w -r -e пакет -e отладка false.debug.test/android.support.test.runner.AndroidJUnitRunner