使用@Suite Junit 时将忽略 CucumberOptions 标签
CucumberOptions tag is being ignored when @Suite Junit is used
@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 声明性测试套件。这意味着您必须 select 使用 JUnit 5 概念执行测试。
- https://github.com/cucumber/cucumber-jvm/tree/main/junit-platform-engine#tags
- https://junit.org/junit5/docs/current/user-guide/#running-tests-tags
要使用 JUnit 5 套件的 select 标记,您必须使用 @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")
@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 声明性测试套件。这意味着您必须 select 使用 JUnit 5 概念执行测试。
- https://github.com/cucumber/cucumber-jvm/tree/main/junit-platform-engine#tags
- https://junit.org/junit5/docs/current/user-guide/#running-tests-tags
要使用 JUnit 5 套件的 select 标记,您必须使用 @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")