Android gradle测试框架:单一类

vos*_*ith 8 android android-testing android-gradle-plugin

是否可以使用新的Android gradle构建框架运行单个测试类?

我有一个包含多个测试类的测试包(所有测试类都是InstrumentationTestCase类).我已经能够设置我的build.gradle文件来运行测试包

defaultConfig{
    testPackageName "com.company.product.tests"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法只测试该包中的一个测试用例?否则我将使用年龄adb shell am instrument -w .......

PS我现在没有时间切换到Roboelectric,但我确实看到它现在几乎是事实上的框架.

Mik*_*ler 4

使用android.test.InstrumentationTestRunnerno,这是不可能的。但是,您确实有选择:

自定义测试运行器

  1. 延长android.test.InstrumentationTestRunner
  2. 添加一个buildConfigField 'String', 'TEST_NAME', '${testName}',其中如果设置testName则为'"${project.properties.get("test")}"',否则为 null
  3. 在您的运行程序中,仅运行与 BuildConfig.TEST_NAME 匹配的测试(如果为 null,则运行所有测试)
  4. 将 替换testInstrumentationRunner为您的自定义跑步者
  5. 运行测试./gradlew connectedCheck -Ptest=com.example.Test.testSomething

使用勺子

Spoon是一个出色的测试运行程序扩展,除其他功能外(例如漂亮的多设备测试报告),它还可以让您运行单独的测试。由于您使用的是 gradle,因此我推荐Spoon Gradle Plugin,该插件的 README 中提供了您想要执行的操作的示例。

更新:使用 Android Gradle 插件运行单独的单元测试

通过添加单元测试支持,Android 现在支持运行单独的单元测试。

这只是一个锚任务,实际的测试任务被调用testDebug等等testReleas。如果您只想运行一些测试,使用gradle --tests标志,您可以通过运行来完成./gradlew testDebug --tests='*.MyTestClass'

来源

编辑:我还应该补充一点,Spoon 是运行测试的直接替代品。您只需修改构建脚本中的几行即可使用它。