能否通过mvn test命令结合Mockito同时运行Cucumber与JUnit测试?
同时运行Cucumber与JUnit测试的Maven配置方案
要在一次mvn test执行中同时跑Cucumber(带@When/@Then等注解的步骤)和JUnit(@Test注解的单元测试),核心是通过Maven Surefire插件统一管理两类测试的执行,具体步骤如下:
1. 确保依赖配置正确
在项目的pom.xml中添加JUnit 5和Cucumber的相关依赖,版本可根据实际需求调整:
<dependencies> <!-- JUnit 5 核心依赖 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.9.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.2</version> <scope>test</scope> </dependency> <!-- Cucumber JUnit 5 集成依赖 --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.11.0</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit-platform-engine</artifactId> <version>7.11.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-suite</artifactId> <version>1.9.2</version> <scope>test</scope> </dependency> </dependencies>
2. 创建Cucumber测试套件入口类
在测试源码目录(如src/test/java)下创建一个Cucumber测试套件类,用来指定feature文件位置和运行配置:
import org.junit.platform.suite.api.ConfigurationParameter; import org.junit.platform.suite.api.IncludeEngines; import org.junit.platform.suite.api.SelectFeatures; import org.junit.platform.suite.api.Suite; import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME; @Suite @IncludeEngines("cucumber") @SelectFeatures("src/test/resources/features") // 替换为你实际的feature文件路径 @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty") // 可选:指定测试报告格式 public class CucumberTestSuite { }
3. 配置Maven Surefire插件
在pom.xml的build/plugins节点下配置Surefire插件,让它同时扫描普通JUnit测试类和Cucumber测试套件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.1.2</version> <configuration> <!-- 扫描所有符合命名规则的测试类,覆盖普通JUnit测试和Cucumber套件 --> <includes> <include>**/*Test.java</include> <include>**/*Tests.java</include> <include>**/*TestSuite.java</include> </includes> </configuration> </plugin> </plugins> </build>
4. 执行测试
直接运行命令:
mvn test
此时Surefire会自动执行所有标注@Test的JUnit单元测试,以及通过CucumberTestSuite触发的所有Cucumber feature测试。
注意事项
- 确保
@SelectFeatures指定的路径与实际feature文件位置一致,比如你的feature文件放在src/test/resources/com/yourproject/features下,需修改对应路径。 - 保持Cucumber和JUnit Platform的版本兼容,避免因版本不匹配导致运行错误。
内容的提问来源于stack exchange,提问作者zepolik
相关产品推荐
相关产品推荐

