【问题标题】:TestNG ERROR Cannot find class in classpathTestNG 错误在类路径中找不到类
【发布时间】:2011-11-27 21:23:08
【问题描述】:

我正在尝试通过命令行运行 testng,我在类路径中有以下内容:

  • testngjar,编译后的测试用例文件的jar,以及其他需要的jar。
  • testng.xml 指向层次结构中的适当类。

Testng 不运行而是抛出:

[TestNG] [ERROR]  Cannot find class in classpath: (name of testcase file)

我之前遇到过同样的问题,我只是添加了。

classpath 中,它解决了问题。但这一次似乎并没有解决它。任何解决方法?提前致谢。

【问题讨论】:

标签: java classpath testng


【解决方案1】:

我刚刚遇到了这个问题,我很确定这是 Eclipse 的 TestNG 插件中的一个错误,因为我能够从命令行运行我的测试就好了。

似乎对我和其他人有用的修复只是清理您的项目(ProjectClean)。一个人不得不重新安装整个插件。

【讨论】:

  • 如果使用 Maven,清理项目并在更新项目后为我工作。
  • 在 Eclipse 中,转到“问题”选项卡并首先检查您的项目是否未在此处列出并出现严重错误:例如“在错误 X 修复之前无法构建项目。”修复这些错误后,您可以执行项目 --> 清理
  • 每当我搜索 Eclipse 的问题时,我总是会找到清理项目的建议,我可以看到人们评论说它对他们有用,但它对我没有用,我不得不搜索其他选项.这是有原因的吗?
【解决方案2】:

如果你的包名是 FabFurnishPackage 并且你的类名是注册,那么 xml 中的代码应该是

<classes>
<class name="FabFurnishPackage.registration">
</classes>

[TestNG] [错误] 在类路径中找不到类:注册 问题已解决...

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我尝试如下。

    1. 清理项目(右键点击pom.xml并清理)
    2. 并更新maven项目(Project > Maven > Update Maven Project)

    这解决了问题。

    【讨论】:

      【解决方案4】:

      只需执行 Eclipse> Project > Clean 然后再次运行测试用例。它应该可以工作。

      它在后台的作用是,它将在您的项目目录中调用 mvn eclipse:clean,这将删除您的 .project 和 .classpath 文件,您还可以执行 mvn eclipse:eclipse - 这会重新生成您的 .project 和 .类路径文件。从而在类路径中添加所需的类。

      【讨论】:

        【解决方案5】:

        添加到 pom:

                <build>
                    <sourceDirectory>${basedir}/src</sourceDirectory>
                    <testSourceDirectory>${basedir}/test</testSourceDirectory>
                     (...)
                    <plugins>
                        (...)
                    </plugins>
                </build>
        

        【讨论】:

        • 这对我有用,但我不明白为什么 - 你能解释一下吗?
        • @nyarasha 这个解决方案对我有用。如果我不得不猜测,那是因为 Maven 为 TestNG 提供了可能存储这些包的目录,然后 TestNG 开始递归查找。即使只是提供 ${baseDir} 也应该像我自己一样工作。似乎问题根本不在于提供目录。我不确定默认情况下它在哪里,但是在项目中提供一个有效目录允许 TestNG 爬取并找到包的位置。然后,Maven 能够将每个包中的更改构建到 target/ 文件夹中并运行。
        【解决方案6】:

        确保您的 suite.xml 不应具​​有 .java 扩展名

        前:

        <test name="Test C1">
            <classes>
                <class name="com.taxi.suiteC.TestCase_C1" ></class>  
            </classes>
        </test>
        

        【讨论】:

          【解决方案7】:

          在从命令提示符运行 testng.xml 文件的命令之前,如果缺少它们,请检查以下内容

          1. 在命令提示符中,确保导航到放置 testng.xml 文件的文件夹。
          2. 导航到set CLASSPATH 并包括testng jar 文件位置、selenium-server jar 文件位置(如果您使用 selenium webdriver)、项目的 bin 文件夹位置,其中包含您的所有 .class 文件项目。
            例如,set CLASSPATH=C:\Selenium\testng-5.8-jdk15.jar;C:\Selenium\selenium-server-standalone-2.31.0.jar;C:\SeleniumTests\YourProject\bin
          3. 现在运行命令java org.testng.TestNG testng.xml.

          我也遇到了同样的情况,但上面的事情对我有用。

          【讨论】:

          • 这确实有效。谢谢一堆。在 ubuntu 中,我将类路径设置如下:/home/user/eclipse-workspace/seleniumGrid/lib/json.jar:/home/user/eclipse-workspace/seleniumGrid/lib/selenium-server-standalone-3.13.0。 jar:/home/user/eclipse-workspace/seleniumGrid/lib/testng-6.7.jar:/home/user/eclipse-workspace/seleniumGrid/bin
          • 您可以在 ~/.bashrc 文件中永久添加类路径 ----------> CLASSPATH=/home/user/eclipse-workspace/seleniumGrid/lib/json.jar: /home/user/eclipse-workspace/seleniumGrid/lib/selenium-server-standalone-3.13.0.jar:/home/user/eclipse-workspace/seleniumGrid/lib/testng-6.7.jar:/home/user/eclipse -workspace/seleniumGrid/bin
          【解决方案8】:

          在我的情况下,包结构不正确,它就像文件夹和子文件夹。我删除了该项目并通过更改相应的 jre 再次导入。之后它对我有用。 例如文件夹结构-TestProject -TestSuite1 包结构-TestProject.TestSuite1

          【讨论】:

            【解决方案9】:

            请确保您已在 TestNG.xml 文件中指定您的类/包。

            <test name="test1" preserve-order="false">
                <classes>
                    <class name="ABC"/>
                </classes>
            </test>
            

            【讨论】:

              【解决方案10】:

              如果以上答案都不起作用,您可以在 IDE 中运行测试,获取类路径并在您的命令中使用它。 例如:如果您使用的是 Intellij IDEA,您可以在控制台顶部找到它(截图如下)。

              单击突出显示的部分会展开并显示完整的类路径。

              您需要删除文件夹内对 jars 的引用:JetBrains\IntelliJ IDEA Community Edition VERSION

              java -cp "path_copied" org.testng.TestNG testng.xml

              如果项目是Maven项目,可以添加maven surefire插件并提供testng套件XML文件路径,导航到项目目录并运行命令:mvn clean install test

                          <plugin>
                              <groupId>org.apache.maven.plugins</groupId>
                              <artifactId>maven-surefire-plugin</artifactId>
                              <version>2.12</version>
                              <configuration>
                                  <suiteXmlFiles>
                                      <suiteXmlFile>config/testrun_config.xml</suiteXmlFile>
                                  </suiteXmlFiles>
                              </configuration>
                          </plugin>
              

              【讨论】:

                【解决方案11】:

                在 Intellij 中,为我解决问题的是打开 Maven 右侧工具栏

                选择“清理”、“安装”并点击“播放”按钮:

                【讨论】:

                  【解决方案12】:

                  我必须从我的测试类中创建一个 jar 文件并将其添加到我的类路径中。以前我将测试类文件添加到类路径中,然后出现上述错误。所以我创建了一个 jar 并添加到类路径中。

                  例如

                  java -cp "my_jars/*" org.testng.TestNG testing.xml
                  

                  【讨论】:

                    【解决方案13】:

                    检查类层次结构。如果您的课程中缺少该包,您将收到此错误。所以,尝试通过选择包来创建一个新的测试类。

                    【讨论】:

                      【解决方案14】:

                      更改 TestNG 输出路径(项目属性-->TestNG-->输出目录)后,它对我有用。

                      【讨论】:

                        【解决方案15】:

                        我刚刚遇到这个问题,是因为检查了运行配置中的跳过测试选项。取消选中并构建,然后运行 ​​testNg,工作。

                        【讨论】:

                          【解决方案16】:

                          我遇到了同样的错误 - 在类路径中找不到类:

                          解决方法:我犯了以下错误:

                          1. 我的课程不在任何包下。所以我创建了一个包,然后在该包下创建了我的类。
                          2. 我没有提到 xml 文件中的完整路径。前任。 .所以我也更正了。
                          3. 然后我右键单击xml文件并作为TestNG运行我的程序已成功执行。

                          【讨论】:

                            【解决方案17】:

                            我面临同样的问题解决方案是,您需要检查 testng 文件,在这种情况下,您在包下创建的类无法通过 Test NG 找到。执行以下步骤,只需将您的项目转换为 Test NG 并使用新的 testNG 文件覆盖写入/rplace。

                            在这种情况下再次运行这个 TestNG,它对我的​​情况有效,

                            【讨论】:

                              【解决方案18】:

                              如果您的项目在 Eclipse(Mars) IDE 中打开: 右键单击eclipse中的项目 点击TestNG 点击“转换为TestNG”

                              这会创建一个新的 testng.xml 文件并提示您覆盖现有的文件(!!!警告,这将删除您之前的 testng.xml !!!)。 点击是。

                              作为 Maven 测试构建运行。

                              【讨论】:

                                【解决方案19】:

                                我尝试了上述所有建议,但对我的情况不起作用。原来我的项目构建路径有错误(找不到依赖的jar之一)。修复该错误后,testng 在我的 Eclipse 中再次运行。

                                【讨论】:

                                  【解决方案20】:

                                  为了避免错误

                                  在类路径中找不到类:(测试用例文件的名称)

                                  您需要将 Runner 类和 Test 类放在一个地方。我的意思是 src 和 test 文件夹。

                                  【讨论】:

                                    【解决方案21】:

                                    我遇到了同样的问题。每当我运行测试时,它总是说在类路径中找不到类。我试图修复 testng.xml 文件,清理项目以及答案所说的几乎所有内容,但没有一个奏效。最后,我检查了构建路径中引用的库,发现有 34 个无效库,结果发现我已从获取 jar 文件的路径中重命名了其中一个文件夹。我修好了路径,测试成功了。

                                    因此,在尝试其他方法解决此问题之前,检查引用的 jar 文件中是否有任何错误可能会很有成效。

                                    【讨论】:

                                      【解决方案22】:

                                      我在尝试执行我的 Testng.xml 文件时遇到了类似的问题。

                                      要解决此问题,您应该将类​​文件从默认 pkg 移动到其他 pkg;即创建一个新的 pkg 并将你的类文件放在那里

                                      【讨论】:

                                        【解决方案23】:

                                        我也面临同样的问题。我尝试以不同的方式设置类路径,它对我有用:

                                        set classpath="projectpath"\bin;"projectpath"\lib\*     
                                        

                                        回车

                                        java org.testng.TestNG testng.xml   
                                        

                                        再次按Enter

                                        我希望这行得通!

                                        【讨论】:

                                          【解决方案24】:

                                          当我使用默认包和一个名为addition的类转换我的项目时, 到 testng.xml。 它被转换为:

                                          <classes>
                                                <class name=".addition"/>
                                          </classes>
                                          

                                          并且抛出了无法加载类的错误。 如果我删除 .在添加之前,代码工作正常。 所以要小心使用默认包。

                                          【讨论】:

                                            【解决方案25】:

                                            这个问题是由于一些构建错误而出现的。 1. 清理项目 - 如果问题没有解决 2.更新maven项目——如果还没有解决 3.转到构建路径(右键单击项目->属性-> java构建路径) 现在检查库文件。如果您看到错误,则通过在给定位置添加丢失的文件来解决它。

                                            我遇到了同样的问题,经过很多方法后,我找到了解决该问题的第三个解决方案

                                            【讨论】:

                                              【解决方案26】:

                                              Eclipse ->右键单击项目 -> 构建路径 em> -> 配置 -> Java 构建路径

                                              添加库 -> JRE 库

                                              添加您在系统中使用的最新 Java 库并删除其他旧的 JRE 库并保存。

                                              【讨论】:

                                                【解决方案27】:

                                                我在使用 ma​​ven

                                                时遇到了同样的问题

                                                有效的解决方案是,testNG 文件中的类名与实际类名不同

                                                由于我更改了类名并且 testng 文件没有更新。

                                                所以请确保 testNG 文件中的 className 应该与实际的 className 匹配

                                                RestAssuredTest 在 testNG 中被误写为 RestAssuredest

                                                这个问题的原因之一

                                                <?xml version="1.0" encoding="UTF-8"?>
                                                
                                                 <suite name="Suite">
                                                   <test name="Test">
                                                <classes>
                                                  <class name="com.mycompany.app.AppTest"/>
                                                  <class name="com.mycompany.app.RestAssuredTest"/>
                                                 <class name="com.mycompany.app.appiumTests"/>
                                                </classes>
                                                </test> <!-- Test -->
                                                </suite> <!-- Suite -->
                                                

                                                【讨论】:

                                                  【解决方案28】:

                                                  右键项目->进入maven->更新项目

                                                  这解决了我的问题,没有别的办法

                                                  【讨论】:

                                                    【解决方案29】:

                                                    在使用 IntelliJ 时遇到了类似的问题,如果它可能对其他人有帮助,那么为我修复它的方法是更改​​ Use classpath of module 字段,使其显示为包名。

                                                    【讨论】:

                                                      【解决方案30】:

                                                      如果你重命名了你的 testNG 类并且在测试套件 xml 文件中,它没有重命名,你会得到这个错误。我也在 xml 文件中进行了更正,它对我有用。

                                                      【讨论】:

                                                        猜你喜欢
                                                        • 1970-01-01
                                                        • 1970-01-01
                                                        • 2014-10-22
                                                        • 1970-01-01
                                                        • 2015-04-30
                                                        • 1970-01-01
                                                        • 2013-01-04
                                                        • 1970-01-01
                                                        • 1970-01-01
                                                        相关资源
                                                        最近更新 更多