Confused о testCompile и androidTestCompile в Android Gradle

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

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

Solutions Collecting From Web of "Confused о testCompile и androidTestCompile в Android Gradle"

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

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

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

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

TestCompile и androidTestCompile – это «по соглашению» папки для Android, которые используются во время выполнения задач, предоставляемых плагином Android.

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

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

Примечание: эспрессо – это такая потрясающая библиотека, которая пытается уйти от робометра 🙂

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

 testCompile 'junit:junit:4.12' 

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

// Тестирование тестируемого устройства

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

Теперь мы видим androidTestCompile здесь, потому что на этот раз мы намерены использовать устройство или эмулятор для тестов, то есть Instrumentation testing. Для уточнения счетчика я бы предложил прочитать от developer.android.com