有没有办法只在Android Gradle项目中运行一组特定的测试?

时间:2014-04-13 17:59:01

标签: android gradle android-gradle travis-ci

我有一个Android / Gradle项目。每当我想运行测试时,我都会运行:

./gradlew connectedInstrumentTest

在我的项目的测试文件夹下运行我的所有测试。

我的测试文件夹有几个自动化测试以及非自动化测试。我最感兴趣的是在没有慢速自动化测试的情况下运行快速非自动化测试。

有没有办法只运行一组特定的测试,例如从一个特定的类或类似的东西?我基本上都在询问任何类型的分离,以便我可以选择在我想要的时候运行一些测试。


创建了一个示例项目here

修改local.properties以指向您的Android SDK。

接下来,启动模拟器或将手机连接到计算机。然后,您可以使用./gradlew connectedInstrumentTest --info运行测试。这将运行所有测试。

我无法弄清楚的是如何只在一个类而不是所有测试中运行测试。

3 个答案:

答案 0 :(得分:12)

自Android Gradle Plugin 1.3.0以来

从版本1.3.0开始,您可以(最后!)指定Android Gradle插件必须传递给InstrumentationTestRunner的参数。

例如,如果您只想运行使用@SmallTest注释的测试而忽略其他测试:

android {
  //....
  defaultConfig {
  //....
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    testInstrumentationRunnerArgument "size", "small"
  }
}

旧解决方法 在插件1.3.0之前不可能这样做,但我发现了一点工作。基本上,我已使用@SmallTest注释快速测试注释并使用InstrumentationTestRunner的自定义子类,我只能运行它们,而不是整个套件。

您可以在this gist中找到示例代码。

答案 1 :(得分:1)

是的,请看一下here。它也应该与android项目一起使用。不幸的是,据我所知,没有办法打破单一方法 - 你只能限制整个套装。

答案 2 :(得分:1)

您也可以在设备上安装测试套装并通过adb手动运行。见android docs