NoClassDefFoundError:org / testng / TestNG

时间:2016-09-22 15:43:11

标签: java ide testng

此错误

  

NoClassDefFoundError:org / testng / TestNG

当我尝试使用IntelliJ IDEA从Testng.xml文件运行测试时,会出现

。 逐个运行我的测试,以及运行指向testng.xml的整个gradle项目,如grade core-test:test

(在我的项目中,我使用的是Appium + IntelliJ + TestNG)

但是当我使用IntelliJ运行testng时,我在按下Run后立即收到此消息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/TestNG
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Caused by: java.lang.ClassNotFoundException: org.testng.TestNG
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 18 more

8 个答案:

答案 0 :(得分:5)

我在此处找到了一个解决方案:https://intellij-support.jetbrains.com/hc/en-us/community/posts/206597869-Cannot-launch-NGTest-runner-in-IntelliJ-IDEA-2016-1

  

我通过选择“整个项目”来实现它(我有“单身   模块“选中”在TestNG“运行/调试”的“配置”选项卡下   配置。“

     

但是,先前的配置在IntelliJ IDEA 15中有效,对我来说,   似乎它可能来自于新IDE的重大改变。

它对我有用。

答案 1 :(得分:3)

添加屏幕截图以帮助Justin的上述答案。默认值为单个模块,需要更改为整个项目

答案 2 :(得分:1)

对我来说有点不同,我使用的是testng配置文件来运行一个testng套件。我从父模块而不是子模块运行它。以下是我为克服错误所做的事情

test ng failure

答案 3 :(得分:0)

请按照以下步骤操作:

  1. 在项目的Java构建路径中添加TestNG库。

  2. 右键单击project,然后依次单击-> Build path -> Configure build path -> Libraries tab -> Add library -> Choose TestNGapply

  3. 创建一个testNG类并运行testng.xml文件,它将起作用。

  4. 右键单击该类中的项目-> testNG-> create testNG class -> give the detailscreate one method,然后运行文件。

答案 4 :(得分:0)

对我来说,这还是有点不同。我刚刚在2019年开始使用IntelliJ,直到圣诞节前后它都能正常工作。这终于解决了我无法运行IntelliJ的行为异常的系统(因为我可以在运行相同IntelliJ版本的另一个系统上从相同存储库运行相同文件)

必须将模板TestNG更改为使用Test Kind of Suite而不是Class,然后将其设置为整个项目。 showing where i changed the project to Whole Project

答案 5 :(得分:0)

按照步骤- 1.从Java构建路径添加TestNG库-转到项目->右键单击->属性-> Java构建路径->第三选项库。

  1. TestNG-选择并应用并关闭

答案 6 :(得分:0)

尝试了本文中提到的所有答案,此外,我还必须从“启动之前:激活工具窗口以使其正常工作”部分中删除“构建”:

Screen Shot

答案 7 :(得分:0)

我的有点不同,使用 Allure 通过 TestNG 生成报告。在 gradle.build 文件的 Allure 部分,我需要从 2.8.1 -> 2.13.8 升级。出于某种原因,2.8.1 导致 TestNG 的类未找到异常,需要对它们进行一些日志记录改进。

def allureVersion = "2.13.8"

allure {
    autoconfigure = true
    aspectjweaver = true
    version = allureVersion
    clean = true
    useTestNG {
        version = allureVersion
    }
}