如何使用gradle 2.4运行单个android单元测试。不支持测试过滤

时间:2015-06-10 03:38:54

标签: java android unit-testing android-studio gradle

我正在使用gradle构建我的android项目,并且无法运行单个单元测试。我有几个测试类,其中一个是MockServerTest,我只想在这个类中运行测试方法 我尝试使用gradle -Dtest.single=MockServerTest test,但结果运行了所有测试,包括其他测试类中的测试 我也尝试了gradle test --tests MockServerTest,但发生了错误

Test filtering is not supported for given version of junit. Please upgrade junit version to at least 4.6.

但我在gradle文件中使用junit 4.12

testCompile 'junit:junit:4.12'

我正在使用gradle 2.4和com.android.tools.build:gradle:1.2.3。 另外,如何在单个测试类中运行单个测试方法?

BTW,我可以在AndroidStudio中运行单一测试方法,右键单击测试方法并从菜单中选择run targetTestMethod()。但是如何在终端实现这一目标呢?我想AndroidStudio也会触发某个命令来执行此操作。我怎么能看到那个命令是什么?

3 个答案:

答案 0 :(得分:5)

自己想出来。我必须跑

gradle testDebug --tests com.my.package.TestClassName

这里有两点需要注意 1.您必须使用gradle testDebuggradle testRelease而不是gradle test。如果您有构建变体,则必须使用gradle testVariantNameDebuggradle testVariantNameRelease
2.您必须指定整个限定类名,包括包名。

答案 1 :(得分:1)

您可以使用https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html#now--设置测试任务过滤器,如下所示:

android {
  testOptions {
    unitTests.all {
      it.testNameIncludePattern = "*.SomeTest"
    }
  }
}

您可以在testOptions Android Gradle plugin DSL和过滤器here上找到更多相关信息。

答案 2 :(得分:0)

您是否尝试过gradle test -Dtest.single=MockServerTest?可以找到更多信息here