如何使用新的Gradle Build System在Android上进行集成测试?

Arg*_*yle 11 android gradle robotium

我们的Android应用程序需要自动化测试,我们的团队正在使用Robotium为我们处理这个问题.这对于单元测试来说没有问题,但我们也在编写一组端到端集成测试,不仅可以通过后端服务器来运行客户端.我有一些测试可以做到这一点,但是如果可能的话,我想将它们与单元测试分开,以便我们的持续集成构建不需要运行实时服务器才能完成.

我们正在使用闪亮的新Gradle构建系统.我想知道我是否可以做类似测试的风格或依赖于父APK的子项目来实现它.我尝试用一​​个单独的项目完成这项工作,使用Robotium指令来测试无源调试APK,但它没有用.也许是因为我在真正的硬件而不是模拟器.即使安装了硬件加速,我的模拟器也运气不佳.

任何建议,或者我应该只是屏住呼吸并使用我的构建需要集成服务器在构建发生时可用?

Joe*_*Joe 11

根据他们的Maven指令,您需要做的就是添加robotium-solo为编译依赖项.

repositories {
    mavenCentral()
}

dependencies {
    instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.2'
}
Run Code Online (Sandbox Code Playgroud)

这将确保您robotium-solo.jar在类路径中拥有该文件.然后在src/instrumentTest目录中定义测试并运行gradle build.看看是否有效?

我会尽我所能,因为大约一年前我们从maven转变为gradle.

*EDIT OP希望测试与gradle构建分开运行,因此解决方案是指定一个自定义源集:

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
}
Run Code Online (Sandbox Code Playgroud)

注意:我没有在此计算机上安装android SDK.如果main.output不起作用尝试andriod.sourceSets.main.output,看看是否有效.

  • 它不是`instrumentTestCompile`吗? (3认同)