How to pass command line arguments to tests with g

2019-04-28 14:51发布

This question already has an answer here:

I am using gradle to run JUnit tests. The problem is that I need to pass arguments from the command line to tests. I tries to pass System properties but failed.

gradle test -Darg1=something

Here is my test:

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

It fails because there is no arg1 argument. Is it possible somehow to pass command line arguments?

2条回答
smile是对你的礼貌
2楼-- · 2019-04-28 15:22

When you run gradle test -Darg1=smth, you pass system parameter arg1 to gradle jvm, not test jvm where tests are run. It is designed this way to protect tests from side effects.

If you need to propagete param to tests, use smth like this

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

and run it the same way

查看更多
一纸荒年 Trace。
3楼-- · 2019-04-28 15:25

Use -D to send your parameters in. Like so:

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

See the gradle command line documentation of -D.

To access it in the tests, you need to propagate it in your build.gradle file.

    test {
       systemProperty "propertyName", "propertyValue"
    }

You can also pass all System Properties like so:

    test {
        systemProperties(System.getProperties())
    }
查看更多
登录 后发表回答