Search code examples
gradlepropertiestestngbuild.gradletask

Gradle task check if property is defined


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?


Solution

  • 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'
        }
    }