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

发布于 2021-01-30 16:20:41

我正在尝试使用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.*

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

关注者
0
被浏览
105
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    以下为我在本地工作。

    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'  
    }
    

    参考文献:



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看