我正在使用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中继续执行,即使在任何一个列的验证失败之后(在场景中提到的步骤之一)。
感谢您的帮助
答案 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 来运行故事。