Java 第一个方案失败时如何跳过所有jvm方案

Java 第一个方案失败时如何跳过所有jvm方案,java,selenium-webdriver,cucumber,cucumber-jvm,Java,Selenium Webdriver,Cucumber,Cucumber Jvm,我有8个jvm场景,第一个场景测量页面加载时间和环境可用性。为了避免不必要的运行,如果第一个场景失败(例如,环境不可用或加载太慢),则应跳过所有其他场景 我该怎么做 我的黄瓜选项: @RunWith(Cucumber.class) @CucumberOptions( strict = true, features = {"src/test/resources/features"}, glue = {"stepDefinitions"},

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

我该怎么做

我的
黄瓜选项

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

谢谢

您可以使用
假设.assumeTrue(false)
跳过测试。但这需要对测试运行程序进行一些更改,并对代码进行更改

  • 为场景创建一个单独的运行程序,检查环境详细信息是否正常工作。让我们将其命名为RunFirstTest.java,并给
    标记
    一个@Smoke值。其他选项值默认为您拥有的值
  • @Smoke
    标记添加到功能文件中检查环境等的场景中。您可以选择拆分功能文件

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

  • 在hook之后创建一个
    ,其值选项设置为
    @Smoke
    。因此,它将仅在烟雾场景中运行
  • 为主要测试创建第二个运行程序。我们将其命名为RunMainTest.java,并给出@MainTests的
    标记
    值。其他选项值默认为您拥有的值
  • @RunWith(Cucumber.class)@CucumberOptions(plugin={“},
    标记={“@MainTests”},glue=“”,features=“”)公共类RunMainTest
    {
    @课前 ()之前的公共静态无效{ if(SkipFlag.SkipFlag) 假设。假设为真(假); } }

  • @MainTests
    标记添加到功能文件中的其他场景。(可选)您可以查看拆分要素文件,并在“要素”选项值中指定要素文件的名称

  • 通过使用maven failsafe插件来运行它。在这个插件的配置中,在pom.xml中添加这两个运行程序

  • 
    运行第一次测试
    Runmain测试
    按字母顺序排列的
    
    如果只有两个流道,则“包含”部分可能是可选的最重要的一点是
    RunFirstTest
    应该是第一个运行的,所以字母顺序应该是第一个。

  • 与maven一起运行它

  • 希望它能起作用。

    < P>而不是尝试在黄瓜上做这件事,只需编写一个简单的BASH脚本,即

    • 运行第一个功能文件,例如
      cumber功能/first\u场景。功能
    • 使用第一次运行的退出代码决定是否运行其余功能
    您可以在大约3行shell脚本中完成此操作


    特性的一个特点是,不同的人会根据自己的具体情况,以不同的方式运行它们。将这些东西放在您的功能集中可能会让其他用户更加困难。

    您是否使用Maven来运行这些测试?使用Maven并出于调试/测试目的,只需在intellij.Gus中运行我的测试,谢谢您的更正。将来将使用此模式!哇!谢谢你的全面回答!看来,这是处理这种事情的最有效的方法,尤其是@smoke标签,用于划分场景。这就是我想要的答案!非常感谢。它应该与cucumber picocontainer(共享驱动程序)一起工作,没有任何问题,对吗?实现了这种方法,工作起来很有魅力!非常有用!一点也不复杂,我学会了一个很好的方法!我欠你一杯啤酒!你应该写一个博客或者类似的东西,在我们的自动化道路上向前迈进是非常有帮助的。我认为,向更有经验的人提问是不被禁止的@蚱蜢,你能看看我关于验证错误消息的另一个问题吗?提前谢谢。谢谢你的回复。蚱蜢的想法已经实现了,一点也不复杂。让我们的生活更轻松,我绝对推荐给任何人。无论如何,谢谢!
    @RunWith(Cucumber.class)
    @CucumberOptions(plugin={ }, tags={"@Smoke"}, glue=" ", features=" ")
    public class RunFirstTest {
    
    public class SkipFlag {   
         public static boolean skipFlag = false; }
    
    @After(value={"@Smoke"})  
    public void afterSkip(Scenario scen) {        
       if(scen.isFailed())            
          SkipFlag.skipFlag = true;   
    }
    
     <configuration>
          <includes>
              <include>RunFirstTest</include>
              <include>RunMainTest</include>
          </includes>
            <runOrder>alphabetical</runOrder>
     </configuration>