找不到类定义错误:org/testng/TestNG

20

这个错误出现在我尝试使用IntelliJ IDEA从Testng.xml文件运行测试时。

NoClassDefFoundError: org/testng/TestNG

逐个运行我的测试以及运行整个指向testng.xml的gradle项目都可以正常工作,比如像 grade core-test:test

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

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

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

我遇到了同样的错误,但是并没有找到解决方案。你解决了吗? - Justin Tilson
8个回答

16

11

为了帮助Justin的答案,需要添加一个屏幕截图。默认是在单个模块中,需要更改为在整个项目中


5

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

test ng failure


1
请按照以下步骤操作: 1. 从Java构建路径中添加TestNG库 - 转到项目 -> 右键单击 -> 属性 -> Java构建路径 -> 第三个选项库。 2. 选择TestNG,然后应用并关闭。

0

请按照以下步骤操作:

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

  2. 右键单击项目,然后选择“构建路径 -> 配置构建路径 -> 库选项卡 -> 添加库 -> 选择TestNG并应用”。

  3. 创建一个TestNG类并运行testng.xml文件,它将正常工作。

  4. 右键单击项目,选择“testNG -> 创建testNG类 -> 提供详细信息并在该类中创建一个方法,然后运行该文件。


0

对我来说,这还是有点不同的。我在2019年才开始使用IntelliJ,一直到圣诞节前都很正常。以下是最终解决了我的系统问题的方法(因为我可以在另一个运行相同IntelliJ版本的系统上运行相同仓库中的文件)

必须更改模板TestNG以使用套件而不是类的测试类型,然后将其设置为整个项目。 显示我如何将项目更改为整个项目


0

尝试了这篇帖子中提到的所有答案,除此之外,我还不得不从“启动前构建”部分中删除“激活工具窗口”,才能使其正常工作:

屏幕截图


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
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接