ErrorCollector规则允许在找到第一个问题后继续执行测试(例如,收集表中所有不正确的行,并立即报告所有行)。
我尝试将org.junit.rules.ErrorCollector与Jbehave故事一起使用,但在执行之后,JBehave说"所有测试都通过"即使有一些失败,ErrorCollector()收集它们。 JBehave应该说一些步骤失败了。
在JUnit中没关系:
public static class UsesErrorCollectorTwice {
@Rule
public ErrorCollector collector= new ErrorCollector();
@Test
public void example() {
String x = [..]
collector.checkThat(x, not(containsString("a")));
collector.checkThat(y, containsString("b"));
}
}
但是在jbehave:
Scenario: S-1
Given check something
...
@Given("check something")
public void checkLoggedIn() {
loginSteps.check_that();
}
...
import org.hamcrest.Matchers;
import org.junit.rules.ErrorCollector;
import org.junit.Rule;
...
@Rule
public ErrorCollector collector= new ErrorCollector();
...
@Step
public void check_that() {
collector.checkThat("Error example", navigationMenuPanel.isUserSignedIn(), Matchers.is(false));
collector.checkThat("User has not been logged-in yet!", navigationMenuPanel.isUserSignedIn(), Matchers.is(true));
collector.addError(new Throwable("Shit error happen"));
collector.checkThat("It'wrong", 1, Matchers.equalTo(3));
}
这个故事总是过去。