从Gradle测试依赖项中排除文件

时间:2016-12-08 10:16:49

标签: gradle

我的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")
}

2 个答案:

答案 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”明确指定此任务)。