Reputation: 273
When running a java selendroid code with testNG, getting an error message, "A Java Exception has occurred." with below exception -
Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/TestNGException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
at java.lang.Class.privateGetMethodRecursive(Class.java:3035)
at java.lang.Class.getMethod0(Class.java:3005)
at java.lang.Class.getMethod(Class.java:1771)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.testng.TestNGException
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
Below is the selendroid java code -
package com.selendroid.demo;
import org.openqa.selenium.WebDriver;
import io.selendroid.SelendroidDriver;
import io.selendroid.common.SelendroidCapabilities;
import io.selendroid.common.device.DeviceTargetPlatform;
import io.selendroid.standalone.SelendroidConfiguration;
import io.selendroid.standalone.SelendroidLauncher;
public class Sele {
private WebDriver driver;
public void setUp() throws Exception {
System.out.println("------------------------Started");
SelendroidConfiguration config = new SelendroidConfiguration();
// Add the selendroid-test-app to the standalone server
config.addSupportedApp("Demo.apk");
// start the standalone server
SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
selendroidServer.launchSelendroid();
// Create the selendroid capabilities
SelendroidCapabilities capa = new SelendroidCapabilities(
"io.selendroid.androiddriver:0.16.0");
capa.setAut("com.example.demo:1.0");
capa.setPlatformVersion(DeviceTargetPlatform.ANDROID15);
// capa.setEmulator(false);
// capa.setCapability(SelendroidCapabilities.EMULATOR, true);
// capa.setSerial("emulator-5554");
SelendroidDriver driver = new SelendroidDriver(capa);
capa.wait(100);
driver = new SelendroidDriver(capa);
}
}
Not familiar with testng and selendroid so please give the solution in detail.
Upvotes: 0
Views: 17541
Reputation: 49
You can also write dependencies like:-
<dependency>
<groupId> org.testng </groupId>
<artifactId> testng </artifactId>
<version> 7.3.0 </version>
<scope>test</scope>
</dependency>
Upvotes: 0
Reputation: 826
My testng jar was on classpath and testng plugin was also installed for eclipse. Converting my project to Maven project in eclipse solved the issue.
Upvotes: 0
Reputation: 75
I had the same problem and I found that the root cause was that in the POM file the scoop was "compile" to the Dependency of TestNG. All I had to do was erase the scoop setting for the TestNG dependency.
It is cause to the exception from the Eclipse TestNG plugin because the plugin do not has the TestNG jar in the classpath when it is running (it’s running after the compilation phase)
Before:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
<scope>compile</scope>
</dependency>
After:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
</dependency>
Upvotes: 0
Reputation: 5740
It seems you don't have the testng jar in your classpath. Just add it.
Upvotes: 1