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?
It is possible to pass custom command line arguments to the test module.
You can do gradle -Dtest. single=ClassUnderTestTest test if you want to test single class or use regexp like gradle -Dtest. single=ClassName*Test test you can find more examples of filtering classes for tests under this link.
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())
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With