求助:Maven命令行执行Selenium/JUnit测试未运行,仅显示BUILD SUCCESS
排查 Maven 执行
mvn clean test 未运行测试用例的问题 1. 检查 Maven Surefire 插件配置
Maven 默认靠 Surefire 插件执行测试,配置不对直接导致测试不跑:
- 确认
pom.xml里有没有正确引入适配 JUnit 4 的 Surefire 版本,同时指定测试类的匹配规则:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <!-- 适配JUnit4的稳定版本 --> <configuration> <includes> <include>**/*Test.java</include> <!-- 对应你的测试类命名,比如如果是*TestCase.java就改这里 --> </includes> </configuration> </plugin> </plugins> </build>
- 要是你的测试类命名不满足默认规则(比如不是
*Test.java或Test*.java),必须在includes里明确写清楚匹配规则。
2. 核对测试类的注解与结构
JUnit 4 对测试类有严格要求,不符合就不会被识别:
- 测试方法必须标注
org.junit.Test注解,而且得是public void类型、无参数 - 要是用了自定义 Runner,得加
@RunWith注解,没特殊需求的话用默认JUnit4.class就行 - 别搞混 JUnit 版本!要是误导入了 JUnit 5 的
org.junit.jupiter.api.Test,JUnit 4 完全认不出来这个方法是测试用例 - 正确示例:
import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class LoginTest { @Test public void testLogin() { // 这里写Selenium初始化和测试逻辑 WebDriver driver = new ChromeDriver(); driver.get("https://your-test-site.com"); // ...测试步骤 driver.quit(); } }
3. 确认测试类的目录位置
Maven 规定测试类必须放在src/test/java目录下,要是你把测试类塞到src/main/java里,Surefire 插件直接无视它们。
- 检查路径:
项目根目录/src/test/java/[你的包路径]/测试类.java
4. 查看 Maven 测试详细日志
执行命令时加日志级别,能看到到底有没有识别到测试类:
mvn clean test -X
- 在日志里搜
SurefirePlugin相关内容,看有没有Found test class的记录:- 没有的话,说明测试类没被识别,回到前面的配置和目录检查
- 有记录但没执行,看看是不是开了测试跳过
5. 检查是否开启了测试跳过
- 看
pom.xml里有没有设置全局跳过:
<properties> <skipTests>true</skipTests> <!-- 有这个就改成false --> </properties>
- 确认命令行有没有传
-DskipTests或-Dmaven.test.skip=true参数,这俩都会直接跳过测试。
6. 验证 Selenium 驱动配置
就算测试类执行了,驱动配置错了也可能导致浏览器不启动但没报错:
- 要么手动指定驱动路径:
System.setProperty("webdriver.chrome.driver", "你的驱动路径/chromedriver.exe");
- 要么用 WebDriverManager 自动管理(需要在
pom.xml加依赖):
WebDriverManager.chromedriver().setup();
- 注意浏览器版本和驱动版本要匹配:Selenium 3.141.59 适配 Chrome 70-88 左右的版本,别搞版本不兼容的情况。
内容的提问来源于stack exchange,提问作者crystianhermann
相关产品推荐
相关产品推荐

