Gradle任务检查是否定义了属性

use*_*293 34 testng properties task gradle

我有一个执行testng测试套件的gradle任务.我希望能够将标志传递给任务以便使用特殊的testng xml套件文件(或者如果未设置标志,则只使用默认套件).

gradle test
Run Code Online (Sandbox Code Playgroud)

应该运行默认的标准测试套件

gradle test -Pspecial
Run Code Online (Sandbox Code Playgroud)

应该运行特殊的测试套件

我一直在尝试这样的事情:

test {
    if (special) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到一个未定义的属性错误.这是怎样的正确方法?

JB *_*zet 68

if (project.hasProperty('special'))
Run Code Online (Sandbox Code Playgroud)

应该这样做.

请注意,您选择testng套件所做的工作是行不通的,AFAIK:测试任务没有任何test()方法.有关工作示例,请参阅https://discuss.gradle.org/t/how-to-run-acceptance-tests-with-testng-from-gradle/4107:

test {
    useTestNG {
        suites 'src/main/resources/testng.xml'
    }
}
Run Code Online (Sandbox Code Playgroud)