使用CMD命令运行TestNG项目遇测试执行异常及编译报错求助
解决方案
1. 修改TestNG.xml后仍执行全量测试问题
- 确认TestNG.xml存放路径和pom配置一致:你当前pom中maven-surefire-plugin配置的suiteXmlFile路径为
TestNG.xml,需保证该文件放在项目根目录(和pom.xml同级),如果存放在src/test/resources目录下,需将配置修改为<suiteXmlFile>src/test/resources/TestNG.xml</suiteXmlFile>。 - 若路径正确仍不生效,可执行命令强制指定TestNG配置文件执行测试:
mvn test -Dsurefire.suiteXmlFiles=TestNG.xml,无需每次执行package全流程。
2. 执行java org.testng.TestNG TestNG.xml找不到主类问题
你pom中testng依赖的scope为test,仅在maven的测试编译运行阶段会被加入类路径,直接执行java命令时系统无法读取到testng的jar包。
- 无需手动创建lib/bin文件夹存放依赖,可直接通过maven exec插件执行,命令为:
mvn exec:java -Dexec.mainClass="org.testng.TestNG" -Dexec.args="TestNG.xml",maven会自动加载所有依赖到类路径。 - 若要直接用java命令执行,可将testng依赖的scope修改为
compile,打包时会自动把依赖包含进去。
3. testCompile阶段报错问题
常见排查步骤:
- 确认本地JDK版本匹配:执行
java -version和javac -version,确认返回版本均为pom中配置的1.8,版本不一致会导致编译失败。 - 取消maven-compiler-plugin配置中source和target的注释,完整配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
- 清理编译缓存重试:执行
mvn clean compile test-compile查看具体报错信息,排查是否为你引入的本地system scope自定义jar包存在依赖冲突。
内容的提问来源于stack exchange,提问作者Michael Yav
相关产品推荐
相关产品推荐

