如何使用gradle测试将命令行参数传递给测试?

时间:2017-02-27 18:04:44

标签: java gradle junit arguments junit4

我正在使用gradle来运行JUnit测试。问题是我需要将参数从命令行传递给测试。我尝试传递系统属性但失败了。

gradle test -Darg1=something

这是我的测试:

public class MyTest {
    @Test
    public void someTest() throws Exception {
        assertEquals(System.getProperty("arg1"), "something");
    }
}

失败,因为没有arg1参数。 有可能以某种方式传递命令行参数吗?

2 个答案:

答案 0 :(得分:13)

运行gradle test -Darg1=smth时,将系统参数arg1传递给gradle jvm,而不是测试运行测试的jvm。它以这种方式设计,以保护测试免受副作用。

如果你需要将param用于测试,请使用像这样的smth

test {
    systemProperty 'arg1', System.getProperty('arg1')
}

以相同的方式运行

答案 1 :(得分:7)

使用-D发送参数。像这样:

./gradlew test -Dgrails.env=dev -D<yourVarName>=<yourValue>

请参阅-D。{/ p>的gradle command line documentation

要在测试中访问它,您需要在build.gradle文件中传播它。

    test {
       systemProperty "propertyName", "propertyValue"
    }

您也可以像这样传递所有系统属性:

    test {
        systemProperties(System.getProperties())
    }