Android gradle测试框架:单一类

时间:2013-12-18 15:01:49

标签: android android-gradle android-testing

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

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

defaultConfig{
    testPackageName "com.company.product.tests"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"
}

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

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

2 个答案:

答案 0 :(得分:4)

使用android.test.InstrumentationTestRunner否,这是不可能的。但是,您可以选择:

自定义测试运行器

  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
  6. 运行测试

    使用Spoon

    Spoon是一个优秀的测试运行器扩展,除了其他功能(如漂亮的多设备测试报告)之外,还允许您运行单独的测试。由于您使用的是gradle,我建议使用Spoon Gradle Plugin,其中有一个示例,说明您想在自述文件中做些什么。

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

    通过增加单元测试支持,Android现在支持运行单个单元测试。

      

    这只是一个锚点任务,实际测试任务被称为testDebugtestReleas等等。如果你想只运行一些测试,使用gradle --tests标志,你可以做通过运行./gradlew testDebug --tests='*.MyTestClass'

    Source

    编辑:我还应该补充一点,Spoon是运行测试的直接替代品。除了构建脚本中的几行之外,您不必修改任何内容即可使用它。

答案 1 :(得分:3)

正如https://stackoverflow.com/a/32603798中所回答的那样 android.testInstrumentationRunnerArguments.class