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

2024-03-28

我正在开发一个具有以下结构的“项目”:

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 任务并执行测试。

然而,有一件事对我来说根本不起作用。我从中学到了Gradle 发行说明 1.10 http://www.gradle.org/docs/1.10/release-notes.html#executing-specific-tests-from-the-command-line有一个名为“测试过滤”的新功能,但它不会影响我从命令行调用的任何任务(例如 gradlew dbFitDb1 --tests *DataIntegrity)。

尽管我应用了 --tests 过滤器,但我的所有测试都已执行。因此我想知道是否有某事。我的脚本有问题或者我是否必须启用一般测试过滤等。

谢谢任何提示!


发现如果您向 JUnit 测试添加 @RunWith 注释,过滤器将不起作用。 Gradle 的人员已经意识到这个问题,并将很快修复它。与此同时,我将使用“test.single”使其工作。

https://issues.gradle.org/browse/GRADLE-3112 https://issues.gradle.org/browse/GRADLE-3112

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐