각 JBehave 스토리 전에 Steps 클래스를 다시 인스턴스화하려면 어떻게해야합니까?

플로리안

내 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ninject가 특정 SerialPort 인스턴스를 다른 클래스의 특정 인스턴스에 주입하도록하려면 어떻게해야합니까?

분류에서Dev

javascript (Nashorn Engine)로 인스턴스화 된 클래스를 다시 인스턴스화하려면 어떻게해야합니까?

분류에서Dev

클래스의 각 인스턴스에 고유 한 일련 번호를 할당하려면 어떻게해야합니까?

분류에서Dev

두 개의 다른 메인 클래스를 동시에 실행하려면 어떻게해야합니까?

분류에서Dev

Elastic Beanstalk의 EC2 인스턴스에서 HTTPS를 활성화하기 위해 httpd를 다시 시작하려면 어떻게해야합니까?

분류에서Dev

내 앱에 스플래시 화면이 표시됩니다. 테스트가 메인 화면을 기다리게하려면 어떻게해야합니까?

분류에서Dev

한 클래스의 메서드를 사용하여 Java에서 다른 인스턴스를 만들려면 어떻게해야합니까?

분류에서Dev

각 빌드의 일부 메서드 / 클래스를 무시하고 두 개의 다른 프레임 워크에 대해 두 개의 다른 DLL을 출력하도록 클래스 라이브러리를 빌드하려면 어떻게해야합니까?

분류에서Dev

다른 클래스에서 연결 클래스를 호출하려면 어떻게해야합니까?

분류에서Dev

각 테스트 방법에 대해 한 번이 아니라 테스트 클래스 당 한 번 활동을 시작하려면 어떻게해야합니까?

분류에서Dev

다른 클래스에서 얻은 값으로 클래스를 새로 고치거나 다시 초기화하려면 어떻게해야합니까?

분류에서Dev

C # 클래스 인스턴스간에 데이터를 보존하려면 어떻게해야합니까?

분류에서Dev

모든 클래스 인스턴스를 동시에 참조하려면 어떻게합니까?

분류에서Dev

value <current value의 각 라디오 버튼에 클래스를 추가하려면 어떻게해야합니까?

분류에서Dev

Ansible에서 모든 AWS EC2 인스턴스를 시작하려면 어떻게해야합니까?

분류에서Dev

모든 스토리지 유형을 수용하고 동시에 각각의 인스턴스가 하나만 있도록 스토리지 클래스를 어떻게 설계합니까?

분류에서Dev

각 모듈 인스턴스를 고유 한 파일에서 읽으려면 어떻게해야합니까?

분류에서Dev

동일한 클래스의 이전 인스턴스에서 인스턴스를 호출하려면 어떻게해야합니까?

분류에서Dev

클래스를 인수로 전달한 다음 해당 클래스의 공유 메서드를 사용하려면 어떻게해야합니까?

분류에서Dev

데스크톱에서 사라진 인스턴스 창을 다시 열려면 어떻게해야합니까?

분류에서Dev

다른 클래스를 등록하려면 WebApiRequestLifestyle의 고유 한 인스턴스를 전달해야합니까?

분류에서Dev

Angular Material datepicker의 모든 인스턴스에 지시문을 추가하려면 어떻게해야합니까?

분류에서Dev

AWS Ubuntu 인스턴스가 codecommit에서 가져 오도록 지시하려면 어떻게해야합니까?

분류에서Dev

클래스의 각 인터페이스에 대해 일부 함수를 개별적으로 정의하려면 어떻게해야합니까?

분류에서Dev

Java에서 2 개의 클래스를 확장하려면 어떻게해야합니까? JFrame과 다른 클래스를 확장해야합니다.

분류에서Dev

클래스 내의 다른 클래스에 대한 포인터를 C ++의 다른 포인터에 복사하려면 어떻게해야합니까?

분류에서Dev

reactjs에 스톱워치가 있습니다. 각 숫자를 배열에 추가하여 각 숫자를 표시하려면 어떻게해야합니까?

분류에서Dev

각도 지시문에서 컨트롤러에 액세스하려면 어떻게해야합니까?

분류에서Dev

하위 클래스에 인스턴스 속성을 추가하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    Ninject가 특정 SerialPort 인스턴스를 다른 클래스의 특정 인스턴스에 주입하도록하려면 어떻게해야합니까?

  2. 2

    javascript (Nashorn Engine)로 인스턴스화 된 클래스를 다시 인스턴스화하려면 어떻게해야합니까?

  3. 3

    클래스의 각 인스턴스에 고유 한 일련 번호를 할당하려면 어떻게해야합니까?

  4. 4

    두 개의 다른 메인 클래스를 동시에 실행하려면 어떻게해야합니까?

  5. 5

    Elastic Beanstalk의 EC2 인스턴스에서 HTTPS를 활성화하기 위해 httpd를 다시 시작하려면 어떻게해야합니까?

  6. 6

    내 앱에 스플래시 화면이 표시됩니다. 테스트가 메인 화면을 기다리게하려면 어떻게해야합니까?

  7. 7

    한 클래스의 메서드를 사용하여 Java에서 다른 인스턴스를 만들려면 어떻게해야합니까?

  8. 8

    각 빌드의 일부 메서드 / 클래스를 무시하고 두 개의 다른 프레임 워크에 대해 두 개의 다른 DLL을 출력하도록 클래스 라이브러리를 빌드하려면 어떻게해야합니까?

  9. 9

    다른 클래스에서 연결 클래스를 호출하려면 어떻게해야합니까?

  10. 10

    각 테스트 방법에 대해 한 번이 아니라 테스트 클래스 당 한 번 활동을 시작하려면 어떻게해야합니까?

  11. 11

    다른 클래스에서 얻은 값으로 클래스를 새로 고치거나 다시 초기화하려면 어떻게해야합니까?

  12. 12

    C # 클래스 인스턴스간에 데이터를 보존하려면 어떻게해야합니까?

  13. 13

    모든 클래스 인스턴스를 동시에 참조하려면 어떻게합니까?

  14. 14

    value <current value의 각 라디오 버튼에 클래스를 추가하려면 어떻게해야합니까?

  15. 15

    Ansible에서 모든 AWS EC2 인스턴스를 시작하려면 어떻게해야합니까?

  16. 16

    모든 스토리지 유형을 수용하고 동시에 각각의 인스턴스가 하나만 있도록 스토리지 클래스를 어떻게 설계합니까?

  17. 17

    각 모듈 인스턴스를 고유 한 파일에서 읽으려면 어떻게해야합니까?

  18. 18

    동일한 클래스의 이전 인스턴스에서 인스턴스를 호출하려면 어떻게해야합니까?

  19. 19

    클래스를 인수로 전달한 다음 해당 클래스의 공유 메서드를 사용하려면 어떻게해야합니까?

  20. 20

    데스크톱에서 사라진 인스턴스 창을 다시 열려면 어떻게해야합니까?

  21. 21

    다른 클래스를 등록하려면 WebApiRequestLifestyle의 고유 한 인스턴스를 전달해야합니까?

  22. 22

    Angular Material datepicker의 모든 인스턴스에 지시문을 추가하려면 어떻게해야합니까?

  23. 23

    AWS Ubuntu 인스턴스가 codecommit에서 가져 오도록 지시하려면 어떻게해야합니까?

  24. 24

    클래스의 각 인터페이스에 대해 일부 함수를 개별적으로 정의하려면 어떻게해야합니까?

  25. 25

    Java에서 2 개의 클래스를 확장하려면 어떻게해야합니까? JFrame과 다른 클래스를 확장해야합니다.

  26. 26

    클래스 내의 다른 클래스에 대한 포인터를 C ++의 다른 포인터에 복사하려면 어떻게해야합니까?

  27. 27

    reactjs에 스톱워치가 있습니다. 각 숫자를 배열에 추가하여 각 숫자를 표시하려면 어떻게해야합니까?

  28. 28

    각도 지시문에서 컨트롤러에 액세스하려면 어떻게해야합니까?

  29. 29

    하위 클래스에 인스턴스 속성을 추가하려면 어떻게해야합니까?

뜨겁다태그

보관