11

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

我们正在使用闪亮的新 Gradle 构建系统。我想知道我是否可以做一些像仅测试风格或依赖于父 APK 的子项目来完成它的事情。我尝试使用 Robotium 指令完全使用单独的项目来完成这项工作,以测试无源调试 APK,但它不起作用。也许是因为我使用的是真正的硬件而不是模拟器。即使安装了硬件加速,我的模拟器也很糟糕。

有什么建议,还是我应该屏住呼吸,继续构建需要集成服务器在构建发生时可用的构建?

4

1 回答 1

11

根据他们的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 希望测试与 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
}

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

于 2013-07-17T18:10:06.830 回答