How to pass command line arguments to tests with gradle test? [duplicate]

ぐ巨炮叔叔 提交于 2019-12-06 23:28:56

问题


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?


回答1:


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

If you need to propagate parameters to tests, use something like this

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

and run it the same way.




回答2:


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())
    }


来源:https://stackoverflow.com/questions/42492742/how-to-pass-command-line-arguments-to-tests-with-gradle-test

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!