Confused о testCompile и androidTestCompile в Android Gradle

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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 здесь, потому что на этот раз мы намерены использовать устройство или эмулятор для тестов, то есть тестирование инструментария. Для уточнения счетчика я бы предложил прочитать от developer.android.com