错误:org.testng.TestNGException:在类路径中找不到类:EmpClass
Posted
技术标签:
【中文标题】错误:org.testng.TestNGException:在类路径中找不到类:EmpClass【英文标题】:Error: org.testng.TestNGException: Cannot find class in classpath: 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文件。
【参考方案1】:
这里也是同样的问题。在我的情况下,它是由一个单独的 test
包中的一个抽象测试类引起的,我的所有 NG 测试都来自该包。一旦我将该抽象类移动到测试包的根目录,它就可以工作了。
【讨论】:
【参考方案2】:当侦听器位于 src/main/java 文件夹下并且基类位于 src/test/java 下时,我遇到了同样的问题,我将基类移动到 src/main/java 下,它运行良好l
【讨论】:
【参考方案3】:如果您使用 IntelliJ IDEA,请尝试以下操作:
-
从“文件”中选择“使缓存无效/重新启动”选项。
单击“无效并重新启动”按钮确认此操作。
然后IDEA会重启。
然后您将找到您的项目的新副本。
然后您需要将项目格式导入/更改为 Maven 项目。 IDEA 将在右下角显示选项。
在此之后,您应该可以运行您的项目了。
【讨论】:
【参考方案4】:当系统本地未安装 MAVEN 时会发生这种情况。
当我从 GIT 克隆一个基于 Maven 的项目时,我遇到了同样的问题,然后我一执行就遇到异常“无法在 ClassPath 中找到类:类名”
于是我做了一个mvn clean test,发现本地没有安装maven。
在完成 sudo apt install maven Maven 安装后,我能够运行代码
【讨论】:
【参考方案5】:我有同样的错误。我清理了maven项目,然后问题就解决了。
【讨论】:
【参考方案6】:让我分享一下对我有用的东西:
当我们执行“mvn clean”时 - 我们正在清理旧的编译类 请转到位置“你的项目目录 -> 目标”,你会发现这个文件夹正在被清理,因为这是 MVN 放置它的编译工件的地方
既然它已经是一个 MAVEN 项目,那么请转到您的项目文件夹并在命令提示符下打开。并发出“mvn clean”,然后发出“mvn test” -> “mvn test”命令会将所有编译后的文件放在适当的文件夹下,然后您可以通过 TestNG 或 MAVEN 本身运行测试。
确保有时将“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 时,我遇到了同样的问题。
以下解决方案对我有用:
-
使用 Git 导入项目。
导入 IDE 后会在右下角提示您一个对话框,显示“导入为 Gradle”,您需要选择该对话框,但请确保您已正确设置 JAVA_HOME 和 GRADLE(Gradle Home 或 Gradle 包装器都应该工作)。
运行 build.gradle 并确保所有依赖项都已正确下载且没有任何错误。
现在转到您的测试用例并尝试使用 TestNG 或 JUnit 运行,如果您正确执行了上述 3 个步骤,您应该能够运行测试用例。
【讨论】:
【参考方案13】:我在使用 selenium 3.11.xx 依赖项时遇到了同样的问题,但是当我使用 selenium 3.4.x 依赖项时我的问题得到了解决。
【讨论】:
【参考方案14】:我在使用 TestNG 6.14.2 版时也遇到了同样的问题
但是,这是由于我的一个愚蠢的错误,maven、testng 或 eclipse 没有任何问题。我正在做的是-
-
以“mvn clean”运行项目
选择“testng.xml”文件并右键单击它以作为TestNG套件运行
这给了我与原始问题中报告的相同的错误
我很快意识到我还没有编译项目,也没有生成 TestNG 随后会使用的所需类文件
项目编译后才会生成“target”文件夹(运行为“mvn build”)
如果您的项目已编译,则不应存在此问题。
【讨论】:
【参考方案15】:这个问题可以通过将TestNG.class包添加到OnlineStore包中来解决
-
步骤 1:构建路径 > 配置构建路径 > Java 构建路径 > 选择
“项目”标签
第 2 步:单击“添加”按钮并选择包含
TestNG 来源。
第 3 步选择 TestNG.xml 作为“TestNG Suite”运行
【讨论】:
【参考方案16】:项目>>清洁和 Maven>>更新项目为我工作
【讨论】:
【参考方案17】:我在这个问题上的 2 美分:我遇到了同样的问题,而我的路径的某些部分是西里尔文。因此,请检查项目的路径是否有特殊字符。一旦我删除它,问题就解决了
【讨论】:
【参考方案18】:我也遇到了同样的异常:
我尝试了以下步骤:
在 Eclipse> 项目 > 清理。 (例外仍然存在)
我跑了另一个项目(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>
删除<exclude>
后,我能够再次在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>
【讨论】:
以上是关于错误:org.testng.TestNGException:在类路径中找不到类:EmpClass的主要内容,如果未能解决你的问题,请参考以下文章