java - 使用@Suite Junit 时将忽略 CucumberOptions 标签

标签 java spring-boot cucumber cucumber-junit

@Suite
@SuiteDisplayName("NAME")
@IncludeEngines("cucumber")
@SelectClasspathResource("cucumber/tests")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "cucumber.tests")
@CucumberOptions(tags = "not @IGNORE")
public class RunCucumberTests {}

这是我以前的配置,其中标签不起作用

@IncludeEngines("cucumber")
@SelectClasspathResource("cucumber/tests")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "cucumber.tests")
@CucumberOptions(tags = "not @IGNORE")
@RunWith(Cucumber.class)
public class RunCucumberTests {}

更改此配置后,它就可以工作了。有谁知道为什么?我怎样才能同时使用 suite 和 CucumberOptions。

最佳答案

您不能将 @CucumberOptions@Suite 结合使用。前者用于 JUnit 4,后者用于 JUnit 5。

@Suite 注释启动 JUnit 5 声明性测试套件。这意味着您必须选择要使用 JUnit 5 概念执行的测试。

要使用 JUnit 5 套件定位特定标签,您必须使用 @IncludeTags@ExcludeTags 注释。例如:

package io.cucumber.skeleton;

import org.junit.platform.suite.api.ConfigurationParameter;
import org.junit.platform.suite.api.ExcludeTags;
import org.junit.platform.suite.api.IncludeEngines;
import org.junit.platform.suite.api.SelectClasspathResource;
import org.junit.platform.suite.api.Suite;

import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;

@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("io/cucumber/skeleton")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "io.cucumber.skeleton")
@ExcludeTags("IGNORE")
public class RunCucumberTest {
}

请注意,这些是 JUnit 5 标签,不包含 Cucumber 标签包含的 @ 符号。

关于java - 使用@Suite Junit 时将忽略 CucumberOptions 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70574831/

相关文章:

java - 日历未验证仅月和日年

java - Gradle:作为文件读取有效,但不能作为资源读取

mysql - 来自查询的响应无法映射到 pojo 类 spring boot

java - 如何在Springboot Restcontroller中使用PUT方法?

java - 单例模式、配置和依赖注入(inject)

java - java springboot微服务中如何高效处理碎片请求?

ruby-on-rails - 在 cucumber 运行测试之前运行一次代码

Cucumber 场景的 Javascript console.log 状态

java - 在 gradle 上使用缓存的依赖项和插件运行 cucumber 测试

java - 在类名后添加冒号会导致错误吗?