Gradle:不同测试的不同系统属性

时间:2013-10-31 11:49:24

标签: gradle spock

我写了Spock的扩展。 @Configuration有两个参数:environment和file - 配置文件的路径,解析了groovy.util.ConfigSlurper。除了参数可以指定为系统属性:“org.wsw.spock.cfg.file”,“org.wsw.spock.cfg.environment”。如果指定了系统属性,它们将覆盖注释中指定的设置(不确定是否更好,但仍然如此)。

我写了两个不同规格的测试。在gradle中运行它们写道:

task configTest ( type: Test, dependsOn: testClasses) {
    include '**/ConfigurationTest.class'
}

task configSysPropsTest ( type: Test, dependsOn: testClasses) {

    include '**/ConfigurationTestSysProps.class'

    systemProperty 'org.wsw.spock.cfg.file', 'feature_test.gconfig'
    systemProperty 'org.wsw.spock.cfg.environment', 'dev'
}

task test( overwrite: true,
    dependsOn: [ configTest, configSysPropsTest ])

它有效,但覆盖任务测试,在我看来不是很好。报告文件夹(build / reports / tests)仅包含一项测试的信息。

有多种方法可以使用不同的系统属性运行不同的测试吗?

2 个答案:

答案 0 :(得分:1)

我不太明白为什么要覆盖test任务。无论如何,使用不同系统属性运行不同测试的唯一方法是拥有多个Test任务。在这种情况下,您需要明确配置Test.reportsDir(或更新的Gradle版本中的Test.reports.html.destination)。

也许您可以更改插件,以便每个测试类都有自己的系统属性。然后,您可以立即设置所有系统属性。

答案 1 :(得分:0)

您是否只是在测试类的gradle.properties方法中为每个测试添加了不同的setup()

E.g:

  • 测试1 FileUtils.copyFile(new File(loader.getResource('test1.properties').getPath()), new File("${testProjectDir.root.absolutePath}/gradle.properties"))

  • 的Test2 FileUtils.copyFile(new File(loader.getResource('test2.properties').getPath()), new File("${testProjectDir.root.absolutePath}/gradle.properties"))