2013-05-13 3 views
1

Given When Then (GWT)로 .story 파일을 만들었습니다.그 때 주어진 것 할 수있다 이야기 드라이브> 1 JBhave 단계?

Contact_List.story 시나리오 : 발견 연락 그들 중 하나가 그런 다음 그 친구가 목록에 표시됩니다 온라인 때 나는 친구 의 연락처 목록을했습니다 감안할 때

나는 두 가지 수준을 가지고 싶습니다 테스트 (빠른 서비스 레이어 테스트 및 UI 테스트)가 필요합니다. RunBDDTests.java

: 둘 다 사용하는

ServiceSteps.java

@Given("I've a contact list of friends") 
... 

UISteps.java

@Given("I've a contact list of friends") 
.... 

그리고 구성된 JBehave의 : 그래서 똑같은 GWT 언어를 사용하여 다음 생성

그러나 JUNit에서 이것을 실행할 때마다 e 테스트에서는 어떤 단계 클래스를 선택하는지가 임의적입니다.

.story 파일이 1 단계 클래스를 초과하지 않도록 매번 두 단계를 실행하는 방법은 무엇입니까?

답변

2

구성에 따라 구성됩니다. JBehave 사용법에서, Configuration은 * .stories를 * Steps.java와 연관시키는 방법을 JBehave 프레임 워크에 알려주는 클래스입니다. 질문자 예제에서, 이것은 RunBDDTests.java입니다.

ServiceConfiguration.java 

public class ServiceConfiguration extends JUnitStories 
{ 
@Override 
public InjectableStepsFactory stepsFactory() {  

    return new InstanceStepsFactory(configuration(), new ServiceSteps()); // <- note steps class 
} 

@Override 
protected List<String> storyPaths() { 

    return new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()), "**/Contact_List.story", ""); //<- note story file name 
} 
} 

UIConfiguration.java

public class UIConfiguration extends JUnitStories 
{ 
    @Override 
    public InjectableStepsFactory stepsFactory() {    
     return new InstanceStepsFactory(configuration(), new UISteps()); // <- note steps class 
    } 

@Override 
protected List<String> storyPaths() {  
    return new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()), "**/Contact_List.story", ""); //<- note story file name 
} 
} 

위의 두 가지 : 단일 GWT 시나리오 두 단계를 연결합니다 하나의 옵션은 두 가지 구성의 UI 단계에 대한 서비스 단계 하나 하나를 만드는 것입니다 구성은 하나의 .story에 대해 두 개의 서로 다른 단계 파일을 실행합니다.

+0

10 가지 단계 풀이 있다면 어떻게 구성합니까? 필요한 각 단계 - 풀에 대해 별도의 JUnitStories 클래스를 작성하고 있습니까? 아니면 더 멋진 매핑을 제공하는 방법이 있습니까? – Alissa

+0

10 가지 JUnit 테스트 케이스로 처리 할 수 ​​있습니다. 다른 방법을 찾을 수도 있습니다. 나는 당신이 효과를 위해 10까지 과장하고 있는지 확실하지 않습니다. 10 개의 서로 다른 풀을 필요로하는 것은 잘못된 것이고 기능 파일이 너무 일반적인 것 같습니다. 한 기능 파일을 다른 단계로 구동하는 것은 일반적으로 동일한 기능을 구동하는 데 사용되지만 테스트 자동화 피라미드 (http://agilenoir.biz/series/agile-thoughts/)의 여러 수준에서 사용됩니다. 전형적으로 2-3 레벨의 "매크로"테스트가 필요합니다. 또 다른 이유는 10 개의 diff 팀이 하나의 기능과 관련되어 있고 2 개의 테스트가 자신의 작품을 테스트하기를 원할 때입니다. –

+0

Btw, "JUnit 테스트 케이스"라고 말하면 JUnitStories를 의미했습니다. " –