Как провести тестирование интеграции на Android с новой системой сборки Gradle?

Наше Android-приложение нуждается в автоматическом тестировании, и наша группа использует Robotium для обработки этого для нас. Это не проблема для модульных тестов, но мы также пишем набор сквозных интеграционных тестов, чтобы реализовать не только клиентские серверы. У меня есть некоторые тесты, которые делают это, но, если это возможно, я хотел бы разбить их отдельно от модульных тестов, чтобы наши непрерывные сборки интеграции не требовали запускать живой сервер для завершения.

Мы используем блестящую новую систему сборки Gradle. Мне интересно, могу ли я сделать что-то вроде тестового теста или подпроекта, который зависит от родительского APK, чтобы он ушел. Я попытался выполнить эту работу с отдельным проектом в целом с помощью инструкций Robotium для тестирования APK с отлаживаемым исходным кодом, но это не сработало. Может быть, потому, что я был на реальном аппаратном обеспечении, а не в эмуляторе. Мне не повезло с эмулятором, даже с установленным аппаратным ускорением.

Любые советы, или я должен просто затаить дыхание и свернуться с моими сборками, требующими, чтобы сервер интеграции был доступен, когда происходят сборки?

Solutions Collecting From Web of "Как провести тестирование интеграции на Android с новой системой сборки Gradle?"

Согласно их инструкциям Maven все, что вам нужно сделать, это добавить robotium-solo в качестве зависимости от компиляции.

 repositories { mavenCentral() } dependencies { instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' } 

Это обеспечит вам файл robotium-solo.jar в вашем пути к классам. Затем определите свои тесты в каталоге src/instrumentTest и выполните gradle build . Посмотрите, работает ли это?

Я помогу, где смогу, так как мы превратились из maven в gradle около года назад.

* EDIT OP хотел, чтобы тесты выполнялись отдельно от сборки градиента, поэтому решение заключается в том, чтобы указать настраиваемый источник, например:

 sourceSets { integrationTest { // Gives you access to the compiled classes in your tests compileClasspath += main.output runtimeClasspath += main.output } } dependencies { integrationTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' } // To run the tests: ./gradlew integrationTest task integrationTest(type: Test) { testClassesDir = sourceSests.integrationTest.output.classesDir classpath = sourceSets.integrationTest.runtimeClasspath } 

Примечание. У меня нет SDK для Android, установленного на этом компьютере. Если main.output не работает, попробуйте использовать andriod.sourceSets.main.output и посмотрите, работает ли это.