为什么新的 gradle 测试过滤功能不适用于我的构建脚本



我正在做一个具有以下结构的"项目":

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

最新更新