测试项目环境:
- Java 17
- JUnit5
- cucumber 7
- maven 3.3.9
- spring Runner类:
@Suit
@IncludeEngines("cucumber")
@SelectClasspathResource("project/uss/as/play/test/features/smoke/smoke_test.feature")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "project.uss.as.play.test")
public class RunnerTest {
}
字符串
在项目中,我有设置文件junit-platform.properties
:
cucumber.execution.parallel.enabled=false
cucumber.execution.parallel.config.strategy=fixed
cucumber.execution.parallel.config.fixed.parallelism=1
cucumber.execution.exclusive-resources.isolated.read-write=org.junit.platform.engine.support.hierarchical.ExclusiveResource.GLOBAL_KEY
cucumber.plugin=pretty, html:target/cucumber.html, json:target/cucumber.json, io.qameta.allure.cucumber7jvm.AllureCucumber7Jvm
cucumber.publish.quiet=true
型
在针对maven的jenkins测试中:
mvn -s /u01/jenkins_slave/workspace/MyTest/.m2/settings.xml clean test -Dmaven.test.failure.ignore=true -Dcucumber.features=classpath:project/uss/as/play/test/features/smoke/smoke_test.feature -Dcucumber.filter.tags="not @skip"
型
因此,在日志中,我必须测试的运行。它不是重复的。这是两个独特的测试的运行。我怀疑,它与启动第一个测试为junit和第二个测试 cucumber 绑定。如何修复它?
我尝试添加到maven命令:-Dsurefire.includeJUnit5Engines=cucumber
和-Dcucumber.filter.tags=@1
-我注解的情况“@1”不变
1条答案
按热度按时间lstz6jyr1#
您正在使用
-Dcucumber.features=....
。正如输出中打印的警告所解释的那样,这将导致Cucumber忽略来自JUnit的任何测试选择器。你也在使用Surefire,它会要求
cucumber
引擎在类中查找测试。Cucumber不使用类通常不会找到任何测试。但是cucumber.features
被使用了,所以现在它可以了。然后,您还使用
@Suite
annotation来运行使用junit-platform-suite
引擎的测试。Surefire还将要求此引擎在类中查找测试,它将查找@Suite
注解的类。然后将其委托给Cucumber,Cucumber将立即忽略其任何请求,因为使用了cucumber.features
。现在我们给Cucumber执行了两次。
解决方案是通过添加
-Dsurefire.includeJUnit5Engines=cucumber
使Surefire忽略套件引擎并仅运行Cucumber。于是:
字符串