0
votes

Is it possible to run a TestNG test suite that is embedded in a JAR file via a Gradle test task?

My project includes JARed bundles of TestNG tests that have an embedded testng.xml file defining which tests should be run in the JAR. Is it possible for Gradle to refer to this embedded XML when running the TestNG tests?

From the command line I use the xmlpathinjar option.

1

1 Answers

1
votes

I dont think it can be done using the Gradle TestNG task. I couldn't find any such support in the TestNGOptions

Instead of using

test{
    useTestNG()
}

you could try going through this post on SO How can I tell Gradle to use my testng.xml file for Test Classes and Ordering? and maybe employ the approach detailed here https://stackoverflow.com/a/28868416

But when you are using a custom Gradle task to run your TestNG tests, please make sure that you add a reference to the ExitCodeListener

Here's a sample

task ('myTask', type: JavaExec) {
    main = 'org.testng.TestNG'
    classpath = sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath
    args = ["-xmlpathinjar", "suites/mysuite.xml", "-listener", "org.testng.TestNG\$ExitCodeListener"]
}

More details on why the ExitCodeListener needs to be referred, can be found here