我的gradle java项目中的测试相当昂贵,所以我想避免经常运行它们。不幸的是,gradle重新运行每个构建的测试,因为资源文件夹中的某些日志文件正在发生变化。
有没有办法从:processTestResources
和:test
的依赖项检查中排除日志文件?我尝试在exclude
任务中包含test
命令,但这似乎没有做任何事情。我的test
任务是
test {
maxHeapSize = "2048m"
workingDir = "src/test/resources/test-instance"
environment "LD_LIBRARY_PATH", "xpressmp/lib:/opt/gurobi/linux64/lib"
environment "XPRESS", "xpressmp/bin"
environment "XPRESSDIR", "xpressmp"
exclude("*.log")
exclude("*.lp")
}
答案 0 :(得分:1)
我认为你所追求的是
sourceSets {
test {
resources {
exclude '*.log'
}
}
}
排除任务只会排除测试类的运行,而不会将哪些文件视为该任务的输入。
顺便说一下。您还可以使用JUnit类别将测试分为短运行和长运行测试,然后使不同的任务或项目属性仅运行快速测试或所有测试或仅运行慢速测试。或者,您可以在不同的源集中拆分测试,并为其执行单独的任务。
答案 1 :(得分:0)
定义新的Test
任务:
task notGenericNotFT( type: Test, dependsOn: testClasses ){
filter { excludeTestsMatching 'generic.*' }
// excludes a whole package, "generic". NB this is not a regex:
// '*' is simply "wildcard" and dot means dot ... other more
// sophisticated "ANT-style" patterns are available in class Test
filter { excludeTestsMatching '*_FT' }
// also exclude all test classes ending in "_FT" (e.g. for "functional test")
}
要了解这些东西的来源,请检查类Test和类TestFilter。
还请注意,gradle命令行解析器非常智能并且允许区分大小写(即使在Linux中也是如此!),因此您可以执行以下操作:
...$ ./gradlew notgen
...,它将运行(只要“ notgen”明确指定此任务)。