在JBehave场景中步骤失败后继续执行

时间:2014-10-23 02:39:47

标签: java selenium-webdriver jbehave

我正在使用Selenium Webdriver和JBehave。我的Jbehave Story包含几个重复步骤的场景,如下面的步骤所示,我创建了一个执行它们的通用函数。

Scenario: 25. Validate Column from Database 
Given I open application URL 
And I login with username "username1" and password "password1"
Then I validate the "column1" from database
Then I validate the "column2" from database
Then I validate the "column3" from database
Then I Logout of the Portal

这是我从数据库

验证列的常用功能
@Then("I validate the \"$column\" from database")
public void validateColumnFromDB(String column)
{
    if(column.equals("column1"))
       getColumnFromDB(propertiesConfiguration.getString("column1"));
    else if(column.equals("column2"))
       getColumnFromDB(propertiesConfiguration.getString("column2"));
    else if (column.equals("column3"))
       getColumnFromDB(propertiesConfiguration.getString("column3"));
}

我使用了Junit ErrorCollector()但是在执行之后,JBehave说“所有测试都通过了”,即使有一些失败并且ErrorCollector()收集了它们。 Atleast JBehave应该说一些步骤失败了。

我的问题是我想在JBehave中继续执行,即使在任何一个列的验证失败之后(在场景中提到的步骤之一)。

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

我会以这种方式在一个步骤中对所有列进行检查:

Scenario: 25. Validate Column from Database 

Given I open application URL 
Then I validate the following columns: "column1,column2,column3" from database

@Then("I validate the following columns: \"$columns\" from database")
public void then_i_walidate_columns_from_databale( List<String> columns){
    String columnsWithError = "";
    boolean validationResult = true;
    for( String column : columns){
        boolean validationResultOfCurrentColumn = ( null != getColumnFromDB(column));
        validationResult &= validationResultOfCurrentColumn;
        if( ! validationResultOfCurrentColumn ){
            columnsWithError += column + " ";
        }
    }
    Assert.assertTrue("The following columns don't pass the validation: " + columnsWithError, validationResult);
}

答案 1 :(得分:0)

发生错误时,您是否在JBehave步骤中抛出异常? JBehave依赖于知道抛出的异常有错误。我想知道ErrorCollector是否正在消耗抛出的异常,因此你的错误没有到达JBehave,因此JBehave认为没有错误。

答案 2 :(得分:0)

  

默认情况下,故事选手配置为快速失败,即执行将在第一个失败的故事时停止(但将首先完成故事中所有场景的执行)。为了生成完整的故事视图(报告失败的故事数量),需要启用跑步者以 ignoreFailureInStories 标志设置为 true 来运行故事。

来源:http://jbehave.org/reference/stable/running-stories.html