我有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 {
}
谢谢!
答案 0 :(得分:2)
您可以使用Assume.assumeTrue(false)
跳过测试。但这需要对测试运行器和代码更改进行一些更改。
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; }
tags
值@MainTests。其他选项值默认为您拥有的值。
@RunWith(Cucumber.class) @CucumberOptions(plugin={" "}, tags={"@MainTests"}, glue=" ", features=" ") public class RunMainTest {
@BeforeClass public static void before() { if(SkipFlag.skipFlag) Assume.assumeTrue(false); } }
将@MainTests
标记添加到要素文件中的其他方案。您可以选择拆分要素文件,并在要素选项值中提供要素文件的名称。
使用maven failsafe插件运行此命令。在此插件的配置中,在pom.xml中添加这两个runner。
<configuration> <includes> <include>RunFirstTest</include> <include>RunMainTest</include> </includes> <runOrder>alphabetical</runOrder> </configuration>
如果您只有2名参赛者,则包含部分可能是可选的。 最重要的一点是RunFirstTest
应该是第一个运行的,所以按字母顺序排在首位。
希望它有效。
答案 1 :(得分:0)
不要试图在Cucumber中这样做,而是考虑编写一个简单的bash脚本
cucumber features/first_scenarios.feature
您可以在大约3行shell脚本中执行此操作。
关于功能的一个方面是,不同的人会希望根据自己的特定情况以不同的方式运行它们。将这些内容放入您的功能集中可能会使其他用户更加困难。