eclipse 使用 TestNG 时出错

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/38036020/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 23:13:30  来源:igfitidea点击:

Getting error on using TestNG

javaeclipsetestngselendroidtestng-eclipse

提问by Karma5

When running a java selendroid code with testNG, getting an error message, "A Java Exception has occurred." with below exception -

使用 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.run(URLClassLoader.java:372)
at java.net.URLClassLoader.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 -

下面是 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);



    }

    }

Not familiar with testng and selendroid so please give the solution in detail.

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

回答by juherr

It seems you don't have the testng jar in your classpath. Just add it.

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

回答by Avi Ulman

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.

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

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)

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

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>

回答by learner

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.

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