NoClassDefFoundError:org/testng/TestNG

问题描述 投票:0回答:9

这个错误

NoClassDefFoundError:org/testng/TestNG

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

。 逐一运行我的测试以及运行指向

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
java ide testng
9个回答
17
投票

我在这里找到了一个解决方案: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 的重大更改。

它对我有用。


11
投票

添加屏幕截图来帮助贾斯汀上面的回答。默认是在单个模块中,需要更改为在整个项目中


5
投票

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


1
投票

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

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

0
投票

请按照以下步骤操作:

  1. 从项目的 java 构建路径中添加

    TestNG
    库。

  2. 右键单击

    project
    ,然后单击
    -> Build path -> Configure build path -> Libraries tab -> Add library -> Choose TestNG
    apply

  3. 创建一个testNG类并运行

    testng.xml
    文件,就可以了。

  4. 右键单击该类中的项目

    -> testNG-> create testNG class -> give the details
    create one method
    ,然后运行该文件。


0
投票

对我来说,这还是有点不同。我是 2019 年才开始使用 IntelliJ,直到圣诞节前后都运行得很好。这最终修复了我无法运行 IntelliJ 的错误系统(因为我可以在运行相同 IntelliJ 版本的另一个系统上运行同一存储库中的相同文件)

必须更改模板 TestNG 以使用测试类型的套件而不是类,然后将其设置为整个项目。 showing where i changed the project to Whole Project


0
投票

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

Screen Shot


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

0
投票

我遇到了同样的问题并找到了解决方案。

最初,我在项目目录下有一个

testng.xml
文件。当我右键单击 XML 来运行 TestNG 时,出现“NoClassDefFoundError: org/testng/TestNG”。 子项目目录下的testng.xml

我检查了 RunConfiguration 是如何设置的;特别是我注意到“使用模块的类路径”。该字段的值设置为

<rootproject>.<subproject>

子项目目录下testng.xml的classpath

我检查了“文件>项目结构>模块”以查看模块

guru99
的类路径是如何配置的。我发现模块的类路径
guru99
几乎是空的;它不包含 TestNG 的 jar。这就是出现NoClassDefFound错误的原因。

我将

testng.xml
文件移动到
src/test/resources
目录中。我的意思是,我得到了
<root project>/<subproject>/src/test/resoures/testng.xml

我尝试右键单击

testng.xml
目录中的
src/test/resources
。运行成功了!我检查了 XML 的运行配置,特别是检查了 IntelliJ 设置的“类路径”。

IntelliJ 选择了 XML 的

<root project><subproject>.test
模块的类路径。类路径充满了包括 TestNG 在内的外部 jar,它们由 Gradle
build.gradle
配置为
testImplementation
依赖项。

因此,IntelliJ 改变了

testng.xml
所在位置的行为。 IntelliJ 似乎期望 XML 文件位于
<subproject>/src/test/resource
目录下。如果是这样,您可以右键单击 XML 并快速运行它。如果您将 XML 定位在
<subproject>/src/test/resourdes
之外,IntelliJ 将无法配置适当的类路径。

© www.soinside.com 2019 - 2024. All rights reserved.