【问题标题】:Maven: mvn test gives error + Cannot find class in classpathMaven:mvn test 给出错误 + 在类路径中找不到类
【发布时间】:2015-11-09 12:17:06
【问题描述】:

直接从 Eclipse IDE 运行 testng.xml,测试套件会被执行,但是从 maven 执行 testng.xml 会出错。

运行mvn compile,它说建立成功。但是在运行mvn test时会出错。

在通过mvn test 运行 maven 脚本时,我收到以下错误:

[INFO]
[INFO] --- maven-compiler-plugin:3.3:testCompile (default-testCompile) @ XXX
--
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.18:test (default-test) @ XXX---
[INFO] No tests to run.
[INFO] Surefire report directory: \XXX\target\surefire-reports
Running TestSuite
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.295 s
[INFO] Finished at: 2015-11-09T17:34:34+05:30
[INFO] Final Memory: 17M/208M

--------------------
-----------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.
18:test (default-test) on project XXX: Exception in provider:
[ERROR] Cannot find class in classpath: com.XXX.tests.XXXX.classtoexecute
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-surefire-plugin:2.18:test (default-test) on project XXX: Exception in provider
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:153)

请帮忙。

下面是POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xx.tests</groupId>
  <artifactId>XXX</artifactId>
  <version>1.0-SNAPSHOT</version>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.18</version>
        <configuration>
          <forkCount>0</forkCount>
          <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
      </plugin>
    </plugins>
  </build>  
  <dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.46.0</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8.5</version>
    </dependency>
    <dependency>
        <groupId>atu.testng</groupId>
        <artifactId>reports</artifactId>
        <version>5.0</version>
    </dependency>
  </dependencies>
</project>

TestNg 如下:

?xml version="1.0" encoding="UTF-8"?>
<suite name="XXXX" parallel="none" >
    <listeners>
        <listener class-name="atu.testng.reports.listeners.ATUReportsListener"></listener>
        <listener class-name="atu.testng.reports.listeners.ConfigurationListener"></listener>
        <listener class-name="atu.testng.reports.listeners.MethodListener"></listener>
    </listeners>
  <test name="test1" >
    <classes>
      <class name="com.XXX.tests.XXXX.classtoexecute"/>
    </classes>
 </test> 
</suite>

项目结构如下:

【问题讨论】:

  • 您应该首先将您的 testng 依赖更新到 6.9.9 并确保更新到 2.19。然后,分享您的 testng.xml 可能会有所帮助。
  • 你确认com.xxxx.tests.XXX.XXXX位于src/test/java目录下吗?
  • @juherr :是的,它是一样的
  • TestNG 已添加为编辑
  • 更新到 6.9.9 和 2.19 导致同样的错误

标签: java eclipse maven build testng


【解决方案1】:

我创建了与您描述的相同的项目结构。按原样复制 pom.xml。以下是我为使其执行所需的类而采取的一些步骤。

  1. 我将testng.xml 直接放在项目的根文件夹中,即在pom.xml 的同一级别上。
  2. 接下来在testng.xml我写了

    <classes>
          <class name="com.Local.Tests.TestClass"/>
    </classes>
    

    检查Java文件开头的包名。

  3. mvn test 运行。

我可以看到我的 selenium 测试成功执行。

    [INFO] Surefire report directory: D:\workspace\TestngPOM\target\surefire-reports
Running TestSuite
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.659 sec 

试一试。

这就是我的 maven 项目结构。

【讨论】:

  • 我也试过了。创建了一个全新的项目,但它仍然给出相同的错误,即在执行它时在类路径中找不到类,因为 testng 工作正常。
  • 我可以看到你编辑的截图。您是否将现有项目转换为 Maven?要执行测试类文件,maven 在src/test/java 中搜索它,然后是您自己的包结构。如果不是,那么 maven 将无法找到测试类。
  • 是的,我稍后添加了 POM.xml 以从 maven 执行 testng,但没有运气。在这种情况下我该如何执行?
  • 你是如何转换的?喜欢right click on project-&gt;Configure-&gt;Convert it to Maven?在非 Maven 项目之上简单地添加 pom.xml 可能不起作用。我建议你从 eclipse 创建一个简单的 maven 项目,它会给你我分享的项目结构。我遵循进一步的步骤。
  • 好的,我也做了同样的事情。即将non-maven project 转换为Maven。尝试在pom.xml 中的&lt;build&gt; 下添加&lt;sourceDirectory&gt;src&lt;/sourceDirectory&gt;。对我来说效果很好。
【解决方案2】:

将非 maven 转换为 maven 对我的测试项目有效。

right click on project->Configure->Convert it to Maven

【讨论】:

    【解决方案3】:

    我有同样的错误,

    将您的 src 文件夹移动到 Main > Java

    应该是“src &gt; Main &gt; Java” >

    com.something.test.something
    
    com.something.test.sometest2
    

    现在在 maven 中编译/运行

    【讨论】:

    • 所有在Maven中只用于测试的东西通常都放在src/test/中,与src/main中的代码分开
    猜你喜欢
    • 2011-11-27
    • 2014-10-22
    • 2013-07-31
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多