即使其中一个步骤失败,是否有任何方法可以继续执行Cucumber步骤。在我目前的设置,当一步失败,黄瓜跳过剩余的步骤....我不知道是否有某种方法来扭转黄瓜亚军安装..在失败后继续运行黄瓜步骤
我可以注释掉失败的步骤,但它不实用,当你不知道哪个步骤将失败...如果我可以继续剩下的步骤,我会知道一次完整的失败测试集......而不是循环过周期...
环境:Cucumber JVM,R,Java ,Ibatis,Spring Framework,Maven
即使其中一个步骤失败,是否有任何方法可以继续执行Cucumber步骤。在我目前的设置,当一步失败,黄瓜跳过剩余的步骤....我不知道是否有某种方法来扭转黄瓜亚军安装..在失败后继续运行黄瓜步骤
我可以注释掉失败的步骤,但它不实用,当你不知道哪个步骤将失败...如果我可以继续剩下的步骤,我会知道一次完整的失败测试集......而不是循环过周期...
环境:Cucumber JVM,R,Java ,Ibatis,Spring Framework,Maven
在步骤失败后继续执行步骤并不是一个好主意,因为步骤失败可能会使世界处于不变的违规状态。更好的策略是增加场景的粒度。不要用几个“Then”语句编写单个场景,而要使用示例列表分别测试每个后置条件。有时场景大纲和示例列表可以合并类似的故事。 https://cucumber.io/docs/reference#scenario-outline
有一些关于添加特征来标记特定步骤以在故障后继续的讨论。 https://github.com/cucumber/cucumber/issues/79
一种方法是捕获所有断言错误,并在最后一步中决定是否失败或通过测试用例。在这种情况下,您可以调整它,比如说,检查任何步骤,看看是否有超过n个错误并且通过测试,如果是的话。
这里是我做了什么:
检查StringBuffer以确定测试用例是否失败。
StringBuffer verificationErrors;
// Initialize your error SringBuffer here
@Before
public void initialize() {
verificationErrors = new StringBuffer();
}
// The following is one of the steps in the test case where I need to assert something
@When("^the value is (\\d+)$")
public void the_result_should_be(int arg1) {
try {
assertEquals(arg1, 0);
}
catch(AssertionError ae) {
verificationErrors.append("Value is incorrect- "+ae.getMessage());
}
检查的StringBuffer在@After或测试用例的最后一步,以确定是否可以通过它还是失败,如下所示:
if (!(verificationErrors.size()==0)) {
fail(verificationErrors.toString());
}
唯一的问题是在报告中,所有步骤看起来都很绿,但测试用例看起来失败了。然后,您可能需要查看错误字符串以了解哪些步骤失败。只要存在断言错误,您就可以向该字符串添加额外信息,以帮助您轻松找到该步骤。
“唯一的问题是,在报告中,所有步骤看起来都很绿,但测试用例看起来失败。”这正是你不想这样做的原因。 – Ariejan 2014-04-16 08:25:29
我看到这是从几年前,但如果你可以,请你更新断开的链接? – pelican 2016-09-26 14:15:01