如何通过Maven控制台运行JUnit测试?解决AOP测试无输出问题
问题分析
你遇到的核心原因是22-aop模块的pom.xml中,Maven Surefire插件配置直接排除了你在STS中运行的所有测试类:
<configuration> <excludes> <exclude>**/RewardNetworkTests.java</exclude> <exclude>**/DBExceptionHandlingAspectTests.java</exclude> <exclude>**/LoggingAspectTests.java</exclude> <exclude>**/RepositoryPerformanceLogTest.java</exclude> </excludes> </configuration>
STS是直接通过JUnit Runner运行单个测试类,不受Maven Surefire的排除规则限制,所以能正常执行并输出日志;而mvn test命令严格遵循该配置,跳过了所有指定测试,因此没有输出。
控制台运行测试的解决方案
以下是几种无需依赖IDE的运行方式:
1. 直接指定单个测试类运行
使用-Dtest参数覆盖排除规则,指定要运行的测试类:
./mvnw -pl 22-aop test -Dtest=RewardNetworkTests
替换RewardNetworkTests为你需要执行的测试类名即可。
2. 运行多个测试类
用逗号分隔多个测试类名称:
./mvnw -pl 22-aop test -Dtest=RewardNetworkTests,LoggingAspectTests
3. 临时修改pom.xml(不推荐长期使用)
注释掉22-aop/pom.xml中Surefire插件的excludes配置块:
<!-- <excludes> <exclude>**/RewardNetworkTests.java</exclude> <exclude>**/DBExceptionHandlingAspectTests.java</exclude> <exclude>**/LoggingAspectTests.java</exclude> <exclude>**/RepositoryPerformanceLogTest.java</exclude> </excludes> -->
之后直接执行命令即可运行所有测试:
./mvnw -pl 22-aop test
注意:课程设计中排除这些测试是因为未完成实验时测试会失败,完成实验后记得恢复该配置,避免后续误执行未通过的测试。
内容的提问来源于stack exchange,提问作者floriank
相关产品推荐
相关产品推荐

