我的JBehave執行程序擴展JUnitStories
以加載並運行幾個.story
文件。它覆蓋stepsFactory
方法在整個幅材見於許多例子:如何在每個JBehave故事之前重新實現我的Steps課程?
public class JBehaveTest extends JUnitStories {
@Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new MySteps());
}
MySteps
是實現@Given,@When,@Then註釋步驟方法POJO。它保持內部成員的狀態以便跟蹤發生什麼時候能夠在Then中正確聲明。例如:
public class Steps {
private Response response;
@When("I post this and that")
public void whenIPostThisAndThat() {
this.response = sendRestRequest();
}
@Then("I get an OK response")
public void thenIGetAnOKResponse() {
assertThat(response.httpStatus).isEqualTo("200");
}
在設計這個,我曾預計JBehave重新實例MySteps
它開始下一個故事之前,這樣的狀態是復位。不幸的是,這不會發生。在所有故事運行之前,stepsFactory
方法只會被調用一次,InstanceStepsFactory
會保留所有故事中的MySteps
的一個實例。因此,我從一個故事到下一個故事都會發生遺留錯誤。
在下一個故事發生之前,強迫JBehave重新演繹MySteps
類的最佳方式是什麼?
使用@BeforeStories和/或@BeforeStory等註釋嗎? –