TestNG 错误在类路径中找不到类

Posted

技术标签:

【中文标题】TestNG 错误在类路径中找不到类【英文标题】:TestNG ERROR Cannot find class in classpath 【发布时间】: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 中,它解决了问题。但这一次似乎并没有解决它。任何解决方法?提前致谢。

【问题讨论】:

我遇到了同样的问题,按照这些步骤帮助我解决了它。 ***.com/a/56656035/10796893 【参考方案1】:

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

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

【讨论】:

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

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

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

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

【讨论】:

【参考方案3】:

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

    清理项目(右键点击pom.xml并清理) 并更新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 文件的命令之前,如果缺少它们,请检查以下内容

    在命令提示符中,确保导航到放置 testng.xml 文件的文件夹。 导航到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 现在运行命令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】:

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

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

    我的课程不在任何包下。所以我创建了一个包,然后在该包下创建了我的类。 我没有提到 xml 文件中的完整路径。前任。 .所以我也更正了。 然后我右键单击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 文件中进行了更正,它对我有用。

【讨论】:

以上是关于TestNG 错误在类路径中找不到类的主要内容,如果未能解决你的问题,请参考以下文章

Atlassian Bamboo Logs:[testng] 在类路径中找不到类:com.vaannila.domain.UserTest

Atlassian Bamboo Logs:[testng]在类路径中找不到类:com.vaannila.domain.UserTest

macos 致命错误: 在类路径或引导类路径中找不到程序包 java.lang

java 主启动类找不到

在类路径中找不到休眠验证器

无法在Postgres中实例化外部Hive Metastore /在类路径中找不到驱动程序