spring cucumber 测试在Jenkins运行两次

iszxjhcz  于 12个月前  发布在  Spring
关注(0)|答案(1)|浏览(139)

测试项目环境:

  • 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”不变

lstz6jyr

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。
于是:

mvn test -Dsurefire.includeJUnit5Engines=cucumber --Dcucumber.features=path/to/example.feature:10

字符串

相关问题