使用 @Suite Junit 时,CucumberOptions 标记被忽略

@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 {}

更改此配置后,它可以工作。有谁知道为什么?我怎么能一起使用套件和 CucumberOptions。

stack overflow CucumberOptions tag is being ignored when @Suite Junit is used
原文答案
author avatar

接受的答案

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

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

要使用 JUnit 5 套件选择标签,您必须使用 @IncludeTags@ExcludedTags 注释。例如:

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 标记所包含的 @ 符号。


答案:

作者头像

另一种选择是使用 @ConfigurationParameter

@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @IGNORE")