Запутался в testCompile и androidTestCompile в Android Gradle


Я новичок в мире тестирования и даже больше в мире тестирования Android. При проведении исследований на Robolectric, что помогает с тестами на android одна вещь смущает меня больше всего. Иногда в Интернете я вижу людей, использующих testCompile ключевое слово в зависимостях скрипта сборки gradle при ссылке на Robolectric, в то время как другие используют androidTestCompile. Конечно, оба не могут быть действительными?

может кто-нибудь объяснить разницу между как и что из них следует использовать Robolectric?

3 84

3 ответа:

просто testCompile - это конфигурация для модульных тестов (расположенных в src / test) и androidTestCompile используется для тестового api (который находится в src / androidTest). Поскольку вы собираетесь писать модульные тесты, вы должны использовать testCompile.

обновление: основное различие между этими двумя является test sourceset работает в обычном Java JVM, тогда как androidTest тесты sourceset выполняются на устройстве Android (или эмуляторе).

чтобы ответить на ваш вопрос-используйте testCompile для robolectric

Почему, потому что robolectric работает на JVM, издеваясь над всем поведением устройства android.

testCompile и androidTestCompile - это" по соглашению " папки android, которые gradle использует при выполнении задач, предоставляемых плагином android.

androidTestDebug выбирает тесты из папки androidTest, testDebug выбирает тесты из тестовой папки,

опять же, это только по соглашению папки может дать исходные наборы для этих конфигураций

Примечание: эспрессо-это такая потрясающая библиотека, попробуйте отойти от robolectric :)

//модульного тестирования

testCompile 'junit:junit:4.12'

приведенный выше код является зависимостью JUnit 4 в сборке.gradle файл в android studio. Вы видите, что он имеет testCompile, beacuse JUnit работает на JVM и не требует запуска устройства или эмулятора. Это также означает, что тесты JUnit не требуют запуска контекста приложения, и если они требуют, нам нужно будет "издеваться" над ними.

/ / Insturmented Модульное Тестирование

androidTestCompile('com.android.support.test:runner:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

теперь мы видим androidTestCompile здесь, потому что это время мы намерены использовать устройство или эмулятор для тестов, то есть тестирования контрольно-измерительных приборов. Для лучшего разъяснения я бы предложил прочитать из developer.android.com