首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gradle只运行一个单元测试类

如何使用Gradle只运行一个单元测试类
EN

Stack Overflow用户
提问于 2014-03-19 12:15:46
回答 11查看 459.1K关注 0票数 596

我是从未有过格莱德尔的。我使用Gradle 1.10和Ubuntu 13。

我想知道是否有任何命令只执行一个单元测试类,类似于SBT中的testOnly

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2015-07-17 05:26:30

运行一个单独的测试类,Airborn的答案是好的。

通过使用一些找到这里的命令行选项,您可以简单地执行以下操作。

代码语言:javascript
复制
gradle test --tests org.gradle.SomeTest.someSpecificFeature
gradle test --tests '*SomeTest.someSpecificFeature'
gradle test --tests '*SomeSpecificTest'
gradle test --tests 'all.in.specific.package*'
gradle test --tests '*IntegTest'
gradle test --tests '*IntegTest*ui*'
gradle test --tests '*IntegTest.singleMethod'
gradle someTestTask --tests '*UiTest' someOtherTestTask --tests '*WebTest*ui'

在gradle的1.10版本中,它支持使用试验滤光片选择测试。例如,

代码语言:javascript
复制
apply plugin: 'java'

test {
  filter {
    //specific test method
      includeTestsMatching "org.gradle.SomeTest.someSpecificFeature"

     //specific test method, use wildcard for packages
     includeTestsMatching "*SomeTest.someSpecificFeature"

     //specific test class
     includeTestsMatching "org.gradle.SomeTest"

     //specific test class, wildcard for packages
     includeTestsMatching "*.SomeTest"

     //all classes in package, recursively
     includeTestsMatching "com.gradle.tooling.*"

     //all integration tests, by naming convention
      includeTestsMatching "*IntegTest"

     //only ui tests from integration tests, by some naming convention
     includeTestsMatching "*IntegTest*ui"
   }
}

对于多种风格的环境(Android的一个常见用例),检查这个答案,因为--tests参数将不受支持,您将得到一个错误。

票数 831
EN

Stack Overflow用户

发布于 2014-03-19 13:02:03

在5之前版本的Gradle中,可以使用test.single system属性指定单个测试。

如果您想测试单个类或使用regexp (如gradle -Dtest.single=ClassUnderTestTest test ),您可以执行gradle -Dtest.single=ClassName*Test test,您可以找到更多用于测试在这个链接下的筛选类的示例。

第5级删除了该选项,因为它被测试过滤使用--tests命令行选项取代。

票数 210
EN

Stack Overflow用户

发布于 2016-06-11 10:45:22

如果您有一个多模块项目:

假设您的模块结构是

代码语言:javascript
复制
root-module
 -> a-module
 -> b-module

您想要运行的测试(TestToRun)是在b-模块中运行的,具有完整的路径: com.xyz.b.module.TestClass.testToRun。

由于您对在b-模块中运行测试感兴趣,所以您应该可以看到b-模块可用的任务。

代码语言:javascript
复制
./gradlew :b-module:tasks

上面的命令将列出b-模块中的所有任务和说明。在理想的情况下,您将有一个名为test的任务来在该模块中运行单元测试。

代码语言:javascript
复制
./gradlew :b-module:test

现在,您已经达到了运行b-模块中所有测试的程度,最后您可以向上面的任务传递一个参数,以运行与特定路径模式匹配的测试。

代码语言:javascript
复制
./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun"

现在,如果你跑了

./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"

它将运行模块a和b的测试任务,这可能导致失败,因为在a-模块中没有匹配上述模式的任何内容。

票数 160
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22505533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档