2013-10-24 2 views

ответ

17

Узор -D<testTaskName>.single=<TestClass> так в вашем примере это должно быть:

gradle -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest 

ПРИМЕЧАНИЕ: Этот ответ является устаревшим. Вы должны использовать переключатель --tests в последних версиях Gradle. (см. другие ответы для объяснения)

+0

Спасибо за ответ, но это не помогло. 'gradlew -DconnectedInstrumentTest.single = UnitTestName connectedInstrumentTest' также запускает все тесты. –

+0

Является ли 'UnitTestName' именем класса или именем метода тестирования? Это должно быть имя класса. – erdi

+0

Это название класса. Я также пытался добавить имя пакета, но он тоже не работал. –

2

Вы должны это проверить.

https://github.com/JCAndKSolutions/android-unit-test

Я сделал вопрос в этом GitHub хранилище, и этот парень решил мою проблему и загрузить Maven, так что в моем файле build.gradle я использую этот плагин.

Инструкции написаны в его репозитории. вы можете легко следовать за ним.

После использования этого андроида-блок-тест плагин, можно использовать как

../gradlew -Dtest.single=SomeTest test 

или

../gradlew -Dtest.single=SomeTest clean check 

Теперь он работает, и я мог работать только специальные тесты, которые я хочу

+0

diddnt работает вообще – jonney

-1

Ответ Эрди не сработал для меня, но у меня есть один родитель для всех моих тестовых классов, поэтому я смог это сделать:

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(); 
     } 
    } 
    //... 
} 
+0

@downvoter, пожалуйста, объясните нижний план. –

0

Вы не должны забывать, чтобы указать имя варианта сборки после test имущественной декларации как

-Dtest<buildVariantName>=<yourTestName>.

Как, если у вас есть тип с debug сборки, которая дает вам debug вариант, то после компиляции, а затем, если вы хотите запустить тест только для этого построения варианта вы должны объявить такую ​​команду:

./gradlew -DtestDebug=UnitTestName testDebug

16

Использование test.single представляется устаревшим.Новый правильный способ сделать это

./gradlew :<module>:test --tests <pattern> 

где <pattern> может быть что-то вроде:

  • com.example.MyTest запустить все методы испытаний в com.example.MyTest
  • *MyTest, чтобы соответствовать каждому методу каждого класс, чье имя заканчивается MyTest
  • *.MyTest.myMethod для запуска определенного метода тестирования в классе MyTest в любом пакете

Если у вас многопроектная сборка, обязательно укажите путь к модулю перед задачей test; в противном случае вы получите ошибочное сообщение об ошибке при поиске тестового шаблона в каждом подпроекте.

Ничего из этого не зафиксировано на сайте Gradle, где бы я ни находил.

+12

Дает мне «Неизвестный параметр командной строки» --tests'' – jlhonora

+1

Уверен, что это модуль с плагином java? Конечно, это не древняя версия Gradle? –

+0

Yup, используя gradle 2.10 and android gradle plugin 2.0.0-beta2 – jlhonora

10

Это работает, если вы используете instrumentationTestRunner:

./gradlew test -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName' 

Использование Gradle 2,10 и андроид Gradle плагин 2.0.0-бета2

+1

Это единственная версия, которая фактически работает для контрольно-измерительных тестов с плагином Android Gradle 2.0 и более поздних версий. Синтаксис более искусный, но да ... –

+2

Это также работало для запуска теста на подключенном телефоне: './gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class = ' .YourClassName'' –

+1

Для тестирования конкретного пакета это' -Pandroid.testInstrumentationRunnerArguments.package = my.package' –

Смежные вопросы