第一个场景失败时如何跳过所有 cucumber-jvm 场景

How to skip all cucumber-jvm scenarios when first scenario is failed

我有 8 个 cucumber-jvm 场景,第一个场景测量页面加载时间和环境可用性。为了避免不必要的运行,如果第一个场景失败了——比如环境不可用,或者加载太慢——所有其他场景应该被跳过。

我该怎么做?

我的CucumberOptions:

@RunWith(Cucumber.class)
@CucumberOptions(
        strict = true,
        features = {"src/test/resources/features"},
        glue = {"stepDefinitions"},
        format = {  "progress", "html:target/Results",
                "json:target/Results/cucumber.json"},
        tags = {"@test"})
        public class TestRunner {
}

谢谢!

您可以使用 Assume.assumeTrue(false) 跳过测试。但这将需要对测试 运行ner 和代码进行一些更改。

  1. 为场景创建一个单独的 运行ner,检查环境细节是否正常。我们称它为 RunFirstTest.java 并给 tags 一个值 @Smoke。其他选项值默认为您所拥有的值。
@RunWith(Cucumber.class)
@CucumberOptions(plugin={ }, tags={"@Smoke"}, glue=" ", features=" ")
public class RunFirstTest {
  1. @Smoke标签添加到检查环境等的功能文件中的场景。您可以选择拆分功能文件。

  2. 创建一个新的 class 来保存静态标志。这是一个简单的实现,您可能会考虑使其更加健壮。

public class SkipFlag {   
     public static boolean skipFlag = false; }
  1. 创建一个 After hook 并将值选项设置为 @Smoke。因此,它将 运行 仅用于烟雾场景。
@After(value={"@Smoke"})  
public void afterSkip(Scenario scen) {        
   if(scen.isFailed())            
      SkipFlag.skipFlag = true;   
}
  1. 为主要测试创建第二个 运行ner。我们称它为 RunMainTest.java 并为其赋予 @MainTests 的 tags 值。其他选项值默认为您所拥有的值。

@RunWith(Cucumber.class) @CucumberOptions(plugin={" "}, tags={"@MainTests"}, glue=" ", features=" ") public class RunMainTest {<br> @BeforeClass public static void before() { if(SkipFlag.skipFlag) Assume.assumeTrue(false); } }

  1. @MainTests标签添加到功能文件中的其他场景。您可以选择拆分功能文件并在功能选项值中给出功能文件的名称。

  2. 运行 这通过使用 maven 故障安全插件。在此插件的配置中,将这 2 个 运行ners 添加到 pom.xml.

 <configuration>
      <includes>
          <include>RunFirstTest</include>
          <include>RunMainTest</include>
      </includes>
        <runOrder>alphabetical</runOrder>
 </configuration>

如果您只有 2 个 运行 用户,则包含部分可能是可选的。 最重要的一点是 RunFirstTest 应该是第一个到 运行,所以按字母顺序应该是第一个。

  1. 运行 它与 maven.

希望有用。

与其尝试在 Cucumber 中执行此操作,不如考虑编写一个简单的 bash 脚本

  • 运行s 第一个特征文件,例如cucumber features/first_scenarios.feature
  • 使用第一个的退出代码运行决定是否运行其余的特征

您大概可以在大约 3 行 shell 脚本中完成此操作。

关于功能的一件事是,不同的人会希望 运行 根据自己的特定情况以不同的方式使用它们。将这些内容放入您的功能集中可能会使其他用户更加困难。