내 JBehave 실행기는 JUnitStories
여러 .story
파일 을로드하고 실행하도록 확장 됩니다 . stepsFactory
웹 전체의 많은 예제에서 볼 수 있듯이 메서드를 재정의합니다 .
public class JBehaveTest extends JUnitStories {
@Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new MySteps());
}
MySteps
@Given, @When, @Then 주석이 달린 단계 메서드를 구현하는 POJO입니다. Then에서 올바르게 주장 할 수 있도록 When에서 발생한 일을 추적하기 위해 내부 구성원의 상태를 유지합니다. 예를 들면 :
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
. 결과적으로 한 스토리에서 다음 스토리로 이월 오류가 발생합니다.
MySteps
다음 스토리 전에 JBehave가 클래스 를 다시 인스턴스화하도록하는 가장 좋은 방법은 무엇입니까 ?
@BeforeStory
해결합니다. 적어도 나에게는 충분합니다. Steps
클래스를 다시 인스턴스화하지는 않지만 적어도 내부 상태를 재설정 할 수있는 후크를 제공합니다. Bill Hileman 에게 찬사를 보냅니다 .
public class Steps {
private Response response;
@BeforeStory
public void resetContext() {
response = null;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다