I have a gradle task that executes a testng test suite. I want to be able to pass a flag to the task in order to use a special testng xml suite file (or just use the default suite if the flag isn't set).
gradle test
Should run the default standard suite of tests
gradle test -Pspecial
Should run the special suite of tests
I've been trying something like this:
test {
if (special) {
test(testng_special.xml);
}
else {
test(testng_default.xml);
}
}
But I get a undefined property error. What is the correct way to go about this?
if (project.hasProperty('special'))
should do it.
Note that what you're doing to select a testng suite won't work, AFAIK: the test task doesn't have any test()
method. Refer to https://discuss.gradle.org/t/how-to-run-acceptance-tests-with-testng-from-gradle/4107 for a working example:
test {
useTestNG {
suites 'src/main/resources/testng.xml'
}
}
@user2506293, that's not necessarily enough. You need to both check if project has a property and if it's set.
This is groovy @Opal - a null results in false, so you don't need to explicitly check that.
@th3morg Thats wrong, if a property exists but is null, hasProperty(..) will still return true, so you have to use
if (project.hasProperty('special') && project.special)
if you want to check for both existance and not null.