如何从命令行

时间:2015-06-11 19:32:51

标签: java shell gradle

我正在尝试使用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 个答案:

答案 0 :(得分:7)

以下适用于我本地。

gradle -Dtest.single=MySuite clean test

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

如引用的链接中所述,上面的示例通过创建**/MySuite*.class形式的文件包含模式来工作,而--test尝试从扫描的测试集中选择测试。我怀疑Gradle中实现的通用测试过滤与JUnit Suite跑步者的具体案例之间存在一些不可预见的相互作用。

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

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

参考文献: