如何从命令行使用 gradle 运行测试套件

2022-09-03 07:49:33

我正在尝试使用gradle使用以下命令运行测试,但它不起作用

gradle cleanTest test --tests my.package.TestSuite

我的测试套件如下所示

@RunWith(Suite.class)
@Suite.SuiteClasses({
    ATests.class,
    BTests.class,
    CTests.class
})
public class MySuite {
  /* placeholder, use this to contain all integration tests in one spot * */
}

尝试运行以下命令有效,但更糟糕的是,它运行每个测试两次。一次单独使用,然后在同一命名空间中的测试套件下再次执行

gradle clean test --tests my.package.*

我可以放弃测试套件并以这种方式进行,但我想更好地了解这里发生了什么,以及为什么我不能告诉它直接运行测试套件。


答案 1

以下内容适用于我在本地。

gradle -Dtest.single=MySuite clean test

这实际上使用了与 使用的更高级的过滤方法不同的方法(测试包含)。--test

如引用的链接中所述,上述示例的工作原理是创建表单的文件包含模式,同时尝试从扫描的测试集中选择测试。我怀疑在Gradle中实现的通用测试过滤与围绕JUnit Suite运行器的特定情况之间存在一些不可预见的交互。**/MySuite*.class--test

话虽如此,即使是Gradle文档也警告说上述方法已被取代,实际上我可能会响应@Opal的评论,并定义一个明确的任务来运行给定测试阶段的套件。例如,以下运行 可能运行集成套件。gradle clean testSuite

task testSuite(type: Test) {
   include 'MySuite.class'  
}

引用:


答案 2

推荐