在web上有很多使用test.过滤测试的例子,包括:
test {
useJUnitPlatform()
include("**/*IT*")
}
Documentation says:includes -用于测试执行的包含模式。
但是gradle java测试的官方文档说应该使用test.filter.includeTestsMatching:
test {
useJUnitPlatform()
filter {
includeTestsMatching("*IT*")
}
}
Documentation says:includeTestsMatching -将测试名称模式添加到包含筛选器。
除了后者允许在方法级别上进行过滤之外,这些方法之间的关键区别是什么?
1条答案
按热度按时间3lxsmp7m1#
include(...)
并不特定于test
任务。它来自test
任务类型实现的PatternFilterable
。这是一个接受Ant样式路径模式的通用过滤器。一些任务类型也实现了此功能,例如jar
、wav
、javaCompile
和更多任务。从本质上讲,如果一个任务对一个文件进行操作,那么它很可能实现了PatternFilterable
,因此你可以使用include(...)
。这方面的文档可以在Working With Files文档中找到,尽管它没有像下面的测试过滤那样显式地调用。filter { }
专用于测试(如果Gradle 1.10之后的测试很重要,则更新)。关键的区别是include(...)
只对文件进行操作,而filter { }
对测试本身进行操作 , 并挂钩到测试引擎(JUnit,TestNG等)。它允许您筛选特定的测试方法,例如:这意味着执行特定的测试类 * 和 * 方法。你不能用
include(...)
做这个,因为它只对文件本身进行操作。有关更多详细信息,请参见测试过滤