gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:13:48 28 4
gpt4 key购买 nike

我有 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)跳过测试。但这需要对测试运行程序和代码进行一些更改。

  1. 为场景创建一个单独的运行程序,用于检查环境详细信息是否全部正常工作。我们将其命名为 RunFirstTest.java 并给出 tags @Smoke 的值。其他选项值默认为您拥有的值。
@RunWith(Cucumber.class)
@CucumberOptions(plugin={ }, tags={"@Smoke"}, glue=" ", features=" ")
public class RunFirstTest {
  • 添加@Smoke标记到功能文件中检查环境等的场景。您也可以选择拆分功能文件。

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

  • public class SkipFlag {   
    public static boolean skipFlag = false; }
  • 创建 After hook将值选项设置为 @Smoke 。因此它只会在烟雾场景下运行。
  • @After(value={"@Smoke"})  
    public void afterSkip(Scenario scen) {
    if(scen.isFailed())
    SkipFlag.skipFlag = true;
    }
  • 为主要测试创建第二个运行程序。我们将其命名为 RunMainTest.java 并为其指定 tags @MainTests 的值。其他选项值默认为您拥有的值。
  • @RunWith(Cucumber.class) @CucumberOptions(plugin={" "},
    tags={"@MainTests"}, glue=" ", features=" ") public class RunMainTest
    {<br/>
    @BeforeClass
    public static void before() {
    if(SkipFlag.skipFlag)
    Assume.assumeTrue(false);
    }
    }

  • 添加@MainTests标记到功能文件中的其他场景。或者,您可以考虑拆分功能文件,并在 features 选项值中给出功能文件的名称。

  • 使用 Maven 故障安全插件运行它。在此插件的配置中,在 pom.xml 中添加这 2 个运行程序。

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

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

  • 使用 Maven 运行它。
  • 希望它能起作用。

    关于java - 当第一个场景失败时如何跳过所有 cucumber-jvm 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49260902/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com