0

使用 testNG 运行 java selendroid 代码时,收到错误消息“发生 Java 异常”。除了以下例外 -

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

下面是 selendroid java 代码 -

    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);



    }

    }

不熟悉testng和selendroid所以请详细给出解决方案。

4

4 回答 4

1

看来您的类路径中没有 testng jar。只需添加它。

于 2016-06-26T07:57:46.757 回答
0

我的 testng jar 在类路径上,并且还为 Eclipse 安装了 testng 插件。在 Eclipse 中将我的项目转换为 Maven 项目解决了这个问题。

于 2017-09-07T06:23:25.980 回答
0

您还可以编写依赖项,例如:-

<dependency>
    <groupId> org.testng </groupId>
    <artifactId> testng </artifactId>
    <version> 7.3.0 </version>
    <scope>test</scope>
</dependency>
于 2021-03-22T06:08:19.063 回答
0

我遇到了同样的问题,我发现根本原因是在 POM 文件中,勺子“编译”到了 TestNG 的依赖项。我所要做的就是删除 TestNG 依赖项的 scoop 设置。

这是Eclipse TestNG插件异常的原因,因为该插件在运行时在类路径中没有TestNG jar(它在编译阶段之后运行)

前:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.11</version>
  <scope>compile</scope>
</dependency>

后:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.11</version>
</dependency>
于 2017-04-04T06:13:47.583 回答