Testing 为什么新的gradle测试过滤功能不适用于我的构建脚本?
我正在从事一个具有以下结构的“项目”:Testing 为什么新的gradle测试过滤功能不适用于我的构建脚本?,testing,gradle,filtering,Testing,Gradle,Filtering,我正在从事一个具有以下结构的“项目”: proj - dbfit-junit/module - db1 - db2 提供一些背景信息:所有这些“模块”(db1、db2)都有JUnit测试,这些测试使用FitnessRunner将它们集成到竹子中 我的gradle脚本如下所示: apply plugin: 'java' repositories { mavenCentral() } dependencies { compile files(fileTre
proj
- dbfit-junit/module
- db1
- db2
提供一些背景信息:所有这些“模块”(db1、db2)都有JUnit测试,这些测试使用FitnessRunner将它们集成到竹子中
我的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任务并执行测试
然而,有一件事对我来说根本不起作用。我从中了解到,有一个新特性叫做“测试过滤”,但它不会影响我从命令行调用的任何任务(例如gradlew dbFitDb1--tests*DataIntegrity)
虽然我应用了--tests过滤器,但我的所有测试都会执行。因此,我想知道我的脚本是否有问题,或者我是否必须启用测试过滤等
谢谢任何提示 发现,如果在JUnit测试中添加@RunWith注释,过滤器将无法工作。Gradle Akle的人承认了这个问题,并将很快解决它。同时,我将使用“test.single”使其工作
它应该能正常工作。也许先尝试一个简单的测试项目。您可以尝试的另一件事是将命名模式放在引号中。您好@PeterNiederwieser,看起来,
@RunsWith
注释是过滤器不工作的原因。当我删除带有注释的@RunsWith时,过滤器工作。我在github中添加了一个示例项目,以防您一开始就想看一看。我认为FitnessSuite.class
runner会导致此错误,但它也不能与BlockJUnit4ClassRunner.class
一起使用,谢谢。我们刚刚在自己的构建中遇到了类似的问题。也许这是新的--tests
功能中的一个bug。我们会调查的。目前,您可以始终使用旧的-DtestTaskName.single=*DataIntegrity
。(根据您的shell,您可能需要引用整个参数。)是否有指向Gradle bug报告的链接?