我正在做一个具有以下结构的"项目":
proj
- dbfit-junit/module
- db1
- db2
提供一些背景信息:所有这些"模块"(db1,db2)都有JUnit测试,这些测试使用FitNesseRunner将它们集成到Bamboo中。
我的 gradle 脚本如下所示:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile files(fileTree("lib"))
testCompile "junit:junit:4.11"
}
ext {
dbFitModuleDir = file("dbfit-junit/module")
dbFitModules = dbFitModuleDir.listFiles({f -> f.isDirectory()} as java.io.FileFilter).collect{it.name}
}
dbFitModules.each { module ->
sourceSets.create("${module}SourceSet") {
java.srcDir new File(dbFitModuleDir, module)
compileClasspath = sourceSets.main.output + configurations.testRuntime
runtimeClasspath = output + sourceSets.main.output + configurations.testRuntime
}
task "dbFit${module.capitalize()}"(type: Test) {
testClassesDir = sourceSets."${module}SourceSet".output.classesDir
classpath = sourceSets."${module}SourceSet".runtimeClasspath
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.10'
}
到目前为止,一切都按预期工作,我能够动态创建特定于模块的 gradle 任务并执行测试。
然而,有一件事对我来说根本不起作用。我从 Gralde 发行说明 1.10 中了解到,有一个名为"测试过滤"的新功能,但它不会影响我从命令行调用的任何任务(例如 gradlew dbFitDb1 --tests *DataIntegrity)。
虽然我应用了 --tests 过滤器,但我的所有测试都会执行。因此,我想知道是否有sth。我的脚本有问题,或者我必须启用一般的测试过滤等。
感谢任何提示!
发现如果将@RunWith注释添加到 JUnit 测试中,过滤器不起作用。来自Gradle的人承认这个问题,并将尽快修复它。与此同时,我将使用"test.single"来使其工作。
https://issues.gradle.org/browse/GRADLE-3112