Java NoClassDefFoundError:org/testng/testng

Java NoClassDefFoundError:org/testng/testng,java,ide,testng,Java,Ide,Testng,这个错误 NoClassDefFoundError:org/testng/testng 当我试图使用IntelliJ IDEA从Testng.xml文件运行测试时出现。 一个接一个地运行我的测试和运行指向testng.xml的整个gradle项目一样完美,就像grade core test:test (在我的项目中,我使用的是Appium+IntelliJ+TestNG) 但是,当我使用IntelliJ运行testng.xml时,我会在按下Run后立即收到以下消息: Exception in t

这个错误

NoClassDefFoundError:org/testng/testng

当我试图使用IntelliJ IDEA从Testng.xml文件运行测试时出现。 一个接一个地运行我的测试和运行指向
testng.xml
的整个gradle项目一样完美,就像
grade core test:test

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

但是,当我使用IntelliJ运行testng.xml时,我会在按下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

我在这里找到了一个解决方案:

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

然而,之前的配置在IntelliJ IDEA 15中起作用,所以对我来说, 似乎它可能来自于对较新IDE的突破性更改


这对我很有用。

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


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


请按照以下步骤操作:

  • 从项目的java构建路径中添加
    TestNG

  • 右键单击
    项目
    ,然后单击
    ->生成路径->配置生成路径->库选项卡->添加库->选择TestNG
    应用

  • 创建一个testNG类并运行
    testNG.xml
    文件,它就可以工作了

  • 右键单击project
    ->testNG->create testNG class->提供详细信息
    在该类中创建一个方法
    ,然后运行该文件


  • 对我来说,这还是有点不同。我在2019年才开始使用IntelliJ,它一直工作到圣诞节前后。下面是最终修复我的行为不端的系统无法运行IntelliJ的原因(因为我可以在另一个运行相同IntelliJ版本的系统上运行同一存储库中的相同文件)

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

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

  • TestNG-选择然后应用并关闭

  • 尝试了本文中提到的所有答案,除此之外,我还必须在发布前从“激活工具窗口”部分中删除Build:


    我的有点不同,使用诱惑生成带有TestNG的报告。在gradle.build文件的诱惑部分,我需要从2.8.1->2.13.8升级。由于某些原因,2.8.1导致TestNG的类not found异常,需要对其进行一些日志记录改进

    def allureVersion = "2.13.8"
    
    allure {
        autoconfigure = true
        aspectjweaver = true
        version = allureVersion
        clean = true
        useTestNG {
            version = allureVersion
        }
    }
    

    我也犯了同样的错误,看不到解决办法。你明白了吗?