[ERROR] org.testng.TestNGException:Cannot find class in classpath:

Maven单元测试失败排查
本文记录了在使用Maven进行单元测试时遇到的问题及解决过程。主要问题是测试类未被找到,导致测试无法正常执行。通过对构建流程的分析,发现测试资源未正确编译并复制到指定目录。

我的报错信息如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project ma-admin-web: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed: There was an error in the forked process
[ERROR] org.testng.TestNGException:
[ERROR] 
[ERROR] Cannot find class in classpath: com.suning.ma.admin.rsf.impl.StmsRSFServiceImplTest
[ERROR] at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
[ERROR] at org.testng.xml.XmlClass.init(XmlClass.java:73)
[ERROR] at org.testng.xml.XmlClass.<init>(XmlClass.java:59)
[ERROR] at org.testng.xml.TestNGContentHandler.startElement(TestNGContentHandler.java:544)
[ERROR] at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
[ERROR] at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:745)
[ERROR] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363)
[ERROR] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
[ERROR] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
[ERROR] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
[ERROR] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
[ERROR] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
[ERROR] at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
[ERROR] at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
[ERROR] at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)
[ERROR] at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:332)
[ERROR] at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
[ERROR] at org.testng.xml.XMLParser.parse(XMLParser.java:39)
[ERROR] at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:17)
[ERROR] at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:10)
[ERROR] at org.testng.xml.Parser.parse(Parser.java:168)
[ERROR] at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:311)
[ERROR] at org.testng.TestNG.run(TestNG.java:1030)
[ERROR] at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:281)
[ERROR] at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:75)
[ERROR] at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:121)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :ma-admin-web

maven 调用surefire执行单测的过程:

[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ imp-service-web ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.7.201606060606:prepare-agent (instrument) @ imp-service-web ---
[INFO] argLine set to -javaagent:/data/.m2/org/jacoco/org.jacoco.agent/0.7.7.201606060606/org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile=/data/jenkinsslave/workspace/imp1.5.7/imp-service-web/target/jacoco.exec
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ imp-service-web ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 11 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ imp-service-web ---
[INFO] Compiling 141 source files to /data/jenkinsslave/workspace/imp1.5.7/imp-service-web/target/classes
17.127: [GC [PSYoungGen: 413134K->33277K(426496K)] 441207K->76068K(550400K), 0.0391110 secs] [Times: user=0.14 sys=0.04, real=0.04 secs] 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ imp-service-web ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 7 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ imp-service-web ---
[INFO] Compiling 2 source files to /data/jenkinsslave/workspace/imp1.5.7/imp-service-web/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ imp-service-web ---

先是clean -> jacoco agent -> maven-resources-plugin ->  maven-compiler-plugin -> maven-resources-plugin:testresource ->

 maven-compiler-plugin:testCompile ->maven-surefire ->test run  jacoco-maven-plugin report -> maven-jar-plugin -> install


找不到test类,就是没有编译,在testresource compile no file compile to copy 到执行的单元测试目录下。

[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ ma-admin-web ---
[INFO] Not compiling test sources



### 关于 `org.testng.TestNGException` 异常的原因及解决方案 #### 测试套件解析错误 当遇到 `org.testng.TestNGException: java.net.ConnectException: Connection timed out: connect` 错误时,这通常意味着 TestNG 在尝试加载测试套件配置文件时遇到了网络连接超时的问题[^1]。具体来说,可能是由于试图访问远程资源或服务未能成功建立连接。 ```java // 示例代码展示如何处理可能的连接异常 try { // 尝试执行某些需要网络的操作 } catch (ConnectException e) { System.err.println("Connection attempt failed"); } ``` #### XML 解析问题 对于 `org.testng.TestNGException: org.xml.sax.SAXParseException` 类型的异常,则表明存在XML文档结构上的不合规之处。自TestNG 6.9.10 版本起,默认会对 testng.xml 文件内的元素进行严格校验。如果 parallel 属性被设为了 none 或其他非法值,就可能导致此类异常发生[^3]。 针对这种情况建议: - 检查并修正 testng.xml 中任何不符合标准语法的地方; - 更新至最新版TestNG库以获得更好的兼容性和修复已知缺陷。 #### 构建环境不稳定 另外还有一种情况是在运行调试过程中偶尔会出现构建失败的情况,这类现象往往不是由单一因素引起的而是多方面共同作用的结果。例如开发工具内部状态的变化或是依赖项之间的冲突都可能会引发意想不到的行为[^2]。 为了解决这个问题可以考虑采取如下措施: - 清理缓存重新编译整个工程; - 确认所有必要的外部组件均已正确安装且版本匹配. #### 连接拒绝错误 最后一种常见的场景是收到类似于 "java.net.ConnectException: Connection refused" 的提示, 它暗示着目标主机主动拒绝对来自客户端发起的新TCP连接请求[^4]. 此类状况一般发生在服务器端口未开放或者是防火墙阻止了通信的情况下. 要克服这个障碍应该做的是: - 验证目的地址和端口号无误; - 查看是否有安全策略限制了特定程序间的交互.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值