Running TestNG using Gradle not working when suites are mentioned in build.gradle

Viewed 587

I need to run TestNG using Gradle and I am new with Gradle.

I am able to run it without stating the testng.xml and with using the includeGroups property. I am not able to run it when I add the suites property.

My testng.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite allow-return-values="true" name="sanitySuite" parallel="tests" thread-count="1" verbose="1">
    <test name="Role Page" >
        <parameter name="userName" value="asdasdasd@asdasdasd.com"/>
        <parameter name="password" value="asdasdasdasd"/>
        <groups>
            <run>
                <include name="roles"/>
                <!--<exclude name="roles"/>-->
            </run>

        </groups>

        <packages>
            <package name=".*"/>
        </packages>
    </test>
</suite>

My build.gradle:

plugins {
    id 'java'
}

group = 'com.rhythmone.fusion'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
        automationTestCompile.extendsFrom testCompile
        automationTestRuntime.extendsFrom testRuntime
}

repositories {
    mavenCentral()
}

ext {
    set('swaggerVersion', "2.9.2")
}

sourceSets {
    automationTest {
        java {
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
            srcDir file('src/main/java')
        }
        resources.srcDir file('src/main/resources')
    }
}

task automationTest(type: Test) {
    testClassesDirs = sourceSets.automationTest.output.classesDirs
    classpath = sourceSets.automationTest.runtimeClasspath
    useTestNG() {
       suites "src/main/resources/testng.xml"
    }
}

dependencies {
        compile 'org.testng:testng:7.1.0'
        compile 'org.testng:testng:6.4.13'
        compile 'io.appium:java-client:7.1.0'
        compile 'org.apache.commons:commons-lang3:3.0'
    compile group: 'org.jasypt', name: 'jasypt', version: '1.9.2'
    compile group: 'de.qaware.jasypt', name: 'jasypt-hibernate5', version: '1.9.2'
    compile group: 'org.json', name: 'json', version: '20190722'

        automationTestCompile 'org.assertj:assertj-core:3.0.0'
    implementation 'io.lettuce:lettuce-core:5.1.7.RELEASE'
    implementation 'io.jsonwebtoken:jjwt:0.9.1'
    implementation 'ma.glasnost.orika:orika-core:1.5.4'
    implementation 'com.opencsv:opencsv:4.1'
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
    runtimeOnly 'mysql:mysql-connector-java:8.0.17'

    // swagger
    compile("io.springfox:springfox-swagger-ui:$swaggerVersion")
    compile("io.springfox:springfox-swagger2:$swaggerVersion") {
        exclude module: 'swagger-annotations'
        exclude module: 'swagger-models'
    }
    compile("io.swagger:swagger-annotations:1.5.21")
    compile("io.swagger:swagger-models:1.5.21")

    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.0'
}

When I run gradle automationTestI get this Error:

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 18.
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy2.stop(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.NoClassDefFoundError: com/lmax/disruptor/SequenceReportingEventHandler
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at java.base/java.lang.Class.getDeclaredClasses0(Native Method)
    at java.base/java.lang.Class.getDeclaredClasses(Class.java:2155)
    at java.base/java.lang.Class$2.run(Class.java:1717)
    at java.base/java.lang.Class$2.run(Class.java:1712)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.lang.Class.getClasses(Class.java:1711)
    at org.testng.internal.ClassInfoMap.registerClass(ClassInfoMap.java:48)
    at org.testng.internal.ClassInfoMap.<init>(ClassInfoMap.java:29)
    at org.testng.internal.ClassInfoMap.<init>(ClassInfoMap.java:21)
    at org.testng.TestRunner.initMethods(TestRunner.java:436)
    at org.testng.TestRunner.init(TestRunner.java:338)
    at org.testng.TestRunner.init(TestRunner.java:291)
    at org.testng.TestRunner.<init>(TestRunner.java:179)
    at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:613)
    at org.testng.SuiteRunner.init(SuiteRunner.java:178)
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:112)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1275)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1251)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1100)
    at org.testng.TestNG.runSuites(TestNG.java:1039)
    at org.testng.TestNG.run(TestNG.java:1007)
    at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:141)
    at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:90)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
    ... 25 more
Caused by: java.lang.ClassNotFoundException: com.lmax.disruptor.SequenceReportingEventHandler
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 58 more
0 Answers
Related