tam*_*tam 16 java shell gradle
我正在尝试使用gradle使用以下命令运行测试,但它不起作用
gradle cleanTest test --tests my.package.TestSuite
Run Code Online (Sandbox Code Playgroud)
我的测试套件如下所示
@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 * */
}
Run Code Online (Sandbox Code Playgroud)
试图运行以下命令是有效的,但加重的是,它运行每次测试两次.一次单独,然后再在同一名称空间中的测试套件下
gradle clean test --tests my.package.*
Run Code Online (Sandbox Code Playgroud)
我可以放弃测试套件并以这种方式执行,但我想更好地了解这里发生的事情,以及为什么我不能告诉它直接运行测试套件.
小智 8
以下适用于我本地.
gradle -Dtest.single=MySuite clean test
Run Code Online (Sandbox Code Playgroud)
这实际上使用了不同的方法(测试包含)与使用的更高级的过滤方法--test.
如引用的链接中所述,上面的示例通过创建表单的文件包含模式,**/MySuite*.class而--test尝试从扫描的测试集中选择测试.我怀疑在Gradle中实现的通用测试过滤与JUnit Suite运行器周围的特定情况之间存在一些不可预见的交互.
话虽如此,即使Gradle文档警告上述方法已被取代,实际上我可能会回应@Opal的评论,并定义一个明确的任务来为特定的测试阶段运行套件.例如,以下运行gradle clean testSuite可能会运行集成套件.
task testSuite(type: Test) {
include 'MySuite.class'
}
Run Code Online (Sandbox Code Playgroud)
参考文献:
| 归档时间: |
|
| 查看次数: |
9832 次 |
| 最近记录: |