【问题标题】:Error: org.testng.TestNGException: Cannot find class in classpath: EmpClass错误:org.testng.TestNGException:在类路径中找不到类:EmpClass
【发布时间】:2014-10-22 00:39:09
【问题描述】:

当我尝试运行测试套件时,我得到了这个异常。我们在这里使用 maven 项目,我完成了刷新、清理、重新安装 testNG,然后导入了 maven 项目,但也遇到了同样的异常。请提出这里缺少的任何方法。

错误控制台:

org.testng.TestNGException: 
Cannot find class in classpath: EmpClass

at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
at org.testng.xml.XmlClass.init(XmlClass.java:73)
at org.testng.xml.XmlClass.<init>(XmlClass.java:59)
at org.testng.xml.TestNGContentHandler.startElement(TestNGContentHandler.java:543)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:766)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1350)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2778)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
at org.testng.xml.XMLParser.parse(XMLParser.java:39)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:17)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:10)
at org.testng.xml.Parser.parse(Parser.java:168)
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:311)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:88)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

【问题讨论】:

  • 告诉我们您是如何配置测试用例的。我们不能只看异常堆栈跟踪......
  • 我通过这个链接selftechy.com/2012/01/09/setting-up-testng-with-eclipse配置测试用例
  • 1) 我创建了一个新的 java 项目 2) 下载了 TestNG 存档(testng-6.8.jar 文件) 3) 配置 testng-6.8.jar 的构建路径
  • 如果您使用 Maven,为什么不在您的 Maven POM 中包含 TestNG 并使用 test 范围?从那里,将您的测试类添加到您的 src/test 文件夹中?
  • 对我来说,这个问题原来是没有使用标准目录布局的问题,所以maven在编译时没有看到需要的java文件。

标签: java selenium selenium-webdriver testng


【解决方案1】:

这里也是同样的问题。在我的情况下,它是由一个单独的 test 包中的一个抽象测试类引起的,我的所有 NG 测试都来自该包。一旦我将该抽象类移动到测试包的根目录,它就可以工作了。

【讨论】:

    【解决方案2】:

    当侦听器位于 src/main/java 文件夹下并且基类位于 src/test/java 下时,我遇到了同样的问题,我将基类移动到 src/main/java 下,它运行良好l

    【讨论】:

      【解决方案3】:

      如果您使用 IntelliJ IDEA,请尝试以下操作:

      1. 从“文件”中选择“使缓存无效/重新启动”选项。
      2. 单击“无效并重新启动”按钮确认此操作。
      3. 然后IDEA会重启。
      4. 然后您将找到您的项目的新副本。
      5. 然后您需要将项目格式导入/更改为 Maven 项目。 IDEA 将在右下角显示选项。
      6. 在此之后,您应该可以运行您的项目了。

      【讨论】:

        【解决方案4】:

        当系统本地未安装 MAVEN 时会发生这种情况。

        当我从 GIT 克隆一个基于 Maven 的项目时,我遇到了同样的问题,然后我一执行就遇到异常“无法在 ClassPath 中找到类:类名”

        于是我做了一个mvn clean test,发现本地没有安装maven。

        在完成 sudo apt install maven Maven 安装后,我能够运行代码

        【讨论】:

          【解决方案5】:

          我有同样的错误。我清理了maven项目,然后问题就解决了。

          【讨论】:

            【解决方案6】:

            让我分享一下对我有用的东西:

            1. 当我们执行“mvn clean”时 - 我们正在清理旧的编译类 请转到位置“你的项目目录 -> 目标”,你会发现这个文件夹正在被清理,因为这是 MVN 放置它的编译工件的地方

            2. 既然它已经是一个 MAVEN 项目,那么请转到您的项目文件夹并在命令提示符下打开。并发出“mvn clean”,然后发出“mvn test” -> “mvn test”命令会将所有编译后的文件放在适当的文件夹下,然后您可以通过 TestNG 或 MAVEN 本身运行测试。

            3. 确保有时将“M2_HOME”或“MAVEN_HOME”设置到您的环境路径 “MAVEN_HOME”不起作用,所以也要添加“M2_HOME”(谷歌这个设置)

            以上建议对我有用,所以我想分享一下,祝你好运

            【讨论】:

              【解决方案7】:

              确保您的课程在 src 下。

              【讨论】:

                【解决方案8】:

                您应该先创建,然后在该包下创建新的 TestNG 类。

                【讨论】:

                  【解决方案9】:

                  我也有这个问题。 我正在使用 IntelliJ IDEA。 我将src/main/java 用于配置文件,src/test/java 用于测试文件。
                  因为这个 testNG 找不到类路径。 为防止出现该错误,需要将所有文件从 src/main/java 移动到 src/test/java,反之亦然。

                  【讨论】:

                    【解决方案10】:

                    对我来说,是我在项目的 Maven 构建中添加了 Skip Tests 复选框/标志

                    因此测试类没有被编译然后TestNG没有找到

                    【讨论】:

                      【解决方案11】:

                      在尝试了我在这个问题上找到的所有方法后,在 eclipse 中,

                      我选择了我的项目 --> 右键 --> 运行方式 --> Maven generate-sources

                      然后我重新运行了我的 TestNG 项目,它运行得非常好,没有任何问题。希望对您有所帮助:)

                      【讨论】:

                        【解决方案12】:

                        当我在 IntelliJ IDEA 上将我的项目从一台 PC 导入到另一台 PC 时,我遇到了同样的问题。

                        以下解决方案对我有用:

                        1. 使用 Git 导入项目。
                        2. 导入 IDE 后会在右下角提示您一个对话框,显示“导入为 Gradle”,您需要选择该对话框,但请确保您已正确设置 JAVA_HOME 和 GRADLE(Gradle Home 或 Gradle 包装器都应该工作)。
                        3. 运行 build.gradle 并确保所有依赖项都已正确下载且没有任何错误。
                        4. 现在转到您的测试用例并尝试使用 TestNG 或 JUnit 运行,如果您正确执行了上述 3 个步骤,您应该能够运行测试用例。

                        【讨论】:

                          【解决方案13】:

                          我在使用 selenium 3.11.xx 依赖项时遇到了同样的问题,但是当我使用 selenium 3.4.x 依赖项时我的问题得到了解决。

                          【讨论】:

                            【解决方案14】:

                            我在使用 TestNG 6.14.2 版时也遇到了同样的问题

                            但是,这是由于我的一个愚蠢的错误,maven、testng 或 eclipse 没有任何问题。我正在做的是-

                            1. 以“mvn clean”运行项目
                            2. 选择“testng.xml”文件并右键单击它以作为TestNG套件运行
                            3. 这给了我与原始问题中报告的相同的错误
                            4. 我很快意识到我还没有编译项目,也没有生成 TestNG 随后会使用的所需类文件
                            5. 项目编译后才会生成“target”文件夹(运行为“mvn build”)
                            6. 如果您的项目已编译,则不应存在此问题。

                            【讨论】:

                              【解决方案15】:

                              这个问题可以通过将TestNG.class包添加到OnlineStore包中来解决

                              1. 步骤 1:构建路径 > 配置构建路径 > Java 构建路径 > 选择 “项目”标签
                              2. 第 2 步:单击“添加”按钮并选择包含 TestNG 来源。
                              3. 第 3 步选择 TestNG.xml 作为“TestNG Suite”运行

                              【讨论】:

                                【解决方案16】:

                                项目>>清洁和 Maven>>更新项目为我工作

                                【讨论】:

                                  【解决方案17】:

                                  我在这个问题上的 2 美分:我遇到了同样的问题,而我的路径的某些部分是西里尔文。因此,请检查项目的路径是否有特殊字符。一旦我删除它,问题就解决了

                                  【讨论】:

                                    【解决方案18】:

                                    我也遇到了同样的异常:

                                    我尝试了以下步骤:

                                    1. 在 Eclipse> 项目 > 清理。 (例外仍然存在)

                                    2. 我跑了另一个项目(testng.xml跑成功了)

                                    运行另一个项目后,我运行了我得到异常的项目,幸运的是它对我有用,没有错误。

                                    【讨论】:

                                    • 面临同样的错误。清理项目对我有用。
                                    • 每次运行 TestNG 测试后,我都必须执行 mvn clean install 然后重新运行测试。否则,错误仍然存​​在。
                                    • 在 Intellij IDE 中-文件->使缓存无效->使缓存无效/重新启动->使无效并重新启动
                                    【解决方案19】:

                                    在我的情况下,我将 maven 项目作为 eclipse 中的默认现有项目导入。之后我导入为 maven 项目。这对我有用。

                                    【讨论】:

                                      【解决方案20】:

                                      对我来说,问题是因为我从 POM 中的编译中排除了测试。我的 pom.xml 看起来像这样:

                                      <plugin>
                                          <groupId>org.apache.maven.plugins</groupId>
                                          <artifactId>maven-compiler-plugin</artifactId>
                                          <version>3.5.1</version>
                                          <configuration>
                                              <source>1.8</source>
                                              <target>1.8</target>
                                              <testExcludes>
                                                  <exclude>com/mycompany/app/AppTest.java</exclude>
                                              </testExcludes>
                                          </configuration>
                                      </plugin>
                                      

                                      删除&lt;exclude&gt; 后,我能够再次在AppTest.java 中运行测试。

                                      【讨论】:

                                        【解决方案21】:

                                        直到最近我还没有遇到任何问题。

                                        现在我必须将套件的 xml 测试文件移动到我正在测试的项目的根目录中。

                                        可能是有一个设置指向我正在测试的类,但我没有找到它。

                                        【讨论】:

                                          【解决方案22】:

                                          我今天遇到了上述同样的问题。 **在eclipse中再次设置类路径**解决了这个问题。

                                          【讨论】:

                                            【解决方案23】:

                                            在我看来,如果 src 有 test/java/ 文件夹,那么在构建路径中的输出位置应该类似于 target/test-classes。

                                            如果 src 有 main/java/ 文件夹,那么在构建路径中的输出位置应该类似于目标/类。

                                            【讨论】:

                                              【解决方案24】:

                                              转到 项目>构建路径>配置构建路径>库>删除错误库

                                              刷新项目后再次运行程序。

                                              【讨论】:

                                                【解决方案25】:

                                                对我来说,这个问题很奇怪。
                                                我的 Eclipse 项目的根目录中有一个 testng.xml 文件。当我通过 Eclipse 更改文件时,它并没有更改我目录中的 testng.xml 文件。

                                                原来它将该文件夹的副本复制到 Eclipse 工作区中。..

                                                希望这对某人有所帮助

                                                【讨论】:

                                                  【解决方案26】:

                                                  在类中包含包名。它会删除你的名字。我也遇到了同样的问题,但是添加带有类的包名称解决了这个问题。

                                                  【讨论】:

                                                    【解决方案27】:

                                                    在 testng.xml 文件中,删除“.”如果您不使用包,则来自标记“”类名。

                                                    【讨论】:

                                                      【解决方案28】:

                                                      我在使用 testng 项目导入 maven 时遇到了类似的问题。通过

                                                      再次转换为 TestNg 项目解决了这个问题

                                                      右击eclipse项目>TestNG>转换为TestNG

                                                      并用新创建的文件替换现有的testng.xml 文件。使用 mvn install 清理和更新 maven 项目

                                                      注意:备份您的testng.xml

                                                      【讨论】:

                                                        【解决方案29】:

                                                        让 IDE 再次工作。该解决方案非常有趣 - 甚至重新安装,删除 IDE 并不能在 Windows 上修复它。在这种情况下,您需要做的是转到 testNG 运行配置 - 并将它们全部删除。 这是针对 Windows 操作系统上的 TestNG XML 类路径错误。我正在使用弹簧工具套件 3.6.4。

                                                        确保删除所有配置,确保项目可以构建,如果没有问题,现在应该运行测试。

                                                        问候 -安东尼·托里

                                                        【讨论】:

                                                          【解决方案30】:

                                                          注意:您必须指定类名以及包,如下所示。

                                                          <suite name="testNGLearning">
                                                              <test name="simpleTest">
                                                                  <classes>
                                                                      <class name="testngTests.TestNGSimpleTest" />
                                                                      <class name="testngTests.TestMessageUtil" />
                                                                  </classes>
                                                              </test>
                                                          </suite>
                                                          

                                                          【讨论】:

                                                            猜你喜欢
                                                            • 2019-05-20
                                                            • 1970-01-01
                                                            • 2019-12-30
                                                            • 1970-01-01
                                                            • 2011-11-27
                                                            • 2013-01-04
                                                            • 1970-01-01
                                                            • 1970-01-01
                                                            • 1970-01-01
                                                            相关资源
                                                            最近更新 更多