错误:org.testng.TestNGException:在类路径中找不到类:EmpClass

时间:2014-08-28 08:11:25

标签: java selenium selenium-webdriver testng

当我试图运行测试套件时,我得到了这个例外。我们在这里使用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)

32 个答案:

答案 0 :(得分:15)

我也有同样的例外:

我尝试了以下步骤:

  1. 在Eclipse中&gt;项目&gt;清洁。 (例外情况仍然存在)

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

  3. 在运行另一个项目之后,我运行了我得到Exception的项目,幸运的是它对我有用,没有错误。

答案 1 :(得分:9)

您必须编辑测试Runner xml文件。 见这个例子:

 <test name="Employees Test">
               <classes>
                      <class name="packagename.classname">
                       </class>
               </classes>
 </test>

<class name="packagename.classname">行中,您必须输入测试包名称,然后输入要运行的类名称。

谢谢,并祝你一切顺利。

答案 2 :(得分:8)

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

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

右键点击eclipse项目&gt; TestNG&gt;转换为TestNG

并用新创建的testng.xml文件替换现有的mvn install文件。使用testng.xml

清理并更新maven项目

注意:备份from random import random from kivy.app import App from kivy.uix.button import Button from kivy.uix.widget import Widget from kivy.graphics import Color, Line, Rectangle from kivy.uix.filechooser import FileChooserListView, FileChooserIconView from kivy.uix.floatlayout import FloatLayout from kivy.uix.image import Image class MyPaintWidget(Widget): def on_touch_down(self, touch): color = (random(), random(), random()) with self.canvas: Rectangle(source='water.png', pos=(0, 0), size=self.size) Color(*color) d = 30. touch.ud['line'] = Line(points=(touch.x, touch.y)) def on_touch_move(self, touch): touch.ud['line'].points += [touch.x, touch.y] class MyPaintApp(App): def build(self): parent = Widget() painter = MyPaintWidget() parent.add_widget(painter) return parent if __name__ == '__main__': MyPaintApp().run()

答案 3 :(得分:4)

转到 项目&gt;构建路径&gt;配置构建路径&gt;库&gt;删除错误库

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

答案 4 :(得分:3)

项目&gt;&gt; Clean和Maven&gt;&gt;更新项目为我工作

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

我也遇到了与TestNG版本6.14.2相同的问题

然而,这是由于我的愚蠢错误而且maven,testng或eclipse没有任何问题。我在做什么 -

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

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

此致 -Anthony Toorie

答案 12 :(得分:0)

在系统上未本地安装MAVEN时会发生。

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

所以我进行了 mvn干净测试,并发现本地未安装maven。

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

答案 13 :(得分:0)

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

  1. 当我们执行“ mvn clean”时-我们正在清理旧的已编译类 请对“您的项目Directroy->目标”进行定位,您会发现此文件夹已被清理,因为MVN正是在该位置放置了已编译的工件

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

  3. 确保有时会在环境路径中设置“ M2_HOME”或“ MAVEN_HOME” “ MAVEN_HOME”不起作用,因此也要添加“ M2_HOME”(为此设置将其谷歌搜索)

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

答案 14 :(得分:0)

确保您的课程在src下。

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

答案 17 :(得分:0)

对我来说,我在项目的Maven版本中添加了跳过测试复选框/标志

因此,测试类未编译,然后未被TestNG找到

答案 18 :(得分:0)

在Eclipse中尝试完成我在此问题上发现的所有问题后,

我选择了我的项目->右键单击->运行为-> Maven生成源

enter image description here

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

答案 19 :(得分:0)

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

以下解决方案对我有用:

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

答案 20 :(得分:0)

可以通过将TestNG.class包添加到OnlineStore包来解决此问题,如下所示

  1. 步骤1:构建路径&gt;配置构建路径&gt; Java构建路径&gt;选择 &#34;项目&#34;标签
  2. 第2步:点击&#34;添加&#34;按钮并选择包含该项目的项目 TestNG来源。
  3. 步骤3选择TestNG.xml运行为&#34; TestNG Suite&#34;

答案 21 :(得分:0)

我有类似的问题,该项目有一些构建错误。 我做了sudo -R 777到项目,然后我清理了我的项目。 之后它运作良好。

希望它有所帮助。

答案 22 :(得分:0)

尝试在JSF项目中运行测试时遇到了同样的错误。

我正在使用Eclipse IDE(kepler)。所以,我做了“project&gt; clean”,然后再次运行同一项目的测试。

有效!

答案 23 :(得分:0)

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

答案 24 :(得分:0)

对我来说,问题是因为我将测试排除在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中运行测试。

答案 25 :(得分:0)

直到最近我才遇到这个问题。

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

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

答案 26 :(得分:0)

我遇到了今天上面提到的同一个问题。 **在eclipse中再次设置class-path **解决了这个问题。

答案 27 :(得分:0)

在我看来,如果src有test / java / folders,那么构建路径输出位置应该像target / test-classes。

如果src有main / java / folders,那么构建路径输出位置应该像目标/类一样。

答案 28 :(得分:0)

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

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

答案 29 :(得分:0)

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

原来它将文件夹的副本复制到eclipse工作区..

希望这可以帮助别人

答案 30 :(得分:0)

将包名称与类包含在一起。它会删除你的名字。我也遇到了同样的问题但是用类添加了包名修复了这个问题。

答案 31 :(得分:0)

在testng.xml文件中,删除&#34;。&#34;来自标签&#34;&#34;如果您不使用包,则为类名。