2013-07-17 2 views
0

저는 솔직히 말해서 완전히 새로운 것입니다. BDD 데이터에 의존하는 테스트를 분리하는 방법

나는 다음과 같은 시나리오를 가지고 말 :

Scenario: User grid displays information about all users 
Given the application have at least one user 
When I go to the user grid page 
Then I should see a list of user data in the user grid 

어떻게 내가 응용 프로그램이 테스트의 시작 부분에서 사용자 데이터를 포함하지 알고 동안이 시나리오 절연 시험을 계속 보장 할 수?

는 지금까지 다음과 같은 옵션을 볼 수

  1. 이 시나리오를 발사하기 전에 사용자를 생성 시나리오를 추가합니다. (격리가 끊어집니다.)
  2. have at least one user을 확인하는 코드가 있고 그렇지 않은 경우 삽입합니다. (인터넷에서 아직이 일을 본 적이 없습니까?이 일반 또는 우수 사례입니까?)

답변

0

테스트가 너무 추상적이라고 생각합니다. 좀 더 구체적으로 시도해보십시오. 사용한다면 :

Given I add a user called bob 
When I view the users grid page 
Then I should see bob in the user list 

은 그때 당신은 심지어

Given I add a user called bob 
And I add a user called bill 
.... 

고려할 수는 훨씬 더 분명 당신이 당신의 옵션 2. 같은 것을 사용할 필요가 있다고 생각하거나

을 선호하는 경우
Given I add an accounts team 
... 

는 SpecFlow 바인딩 단지 방법이 있습니다 잊지 마세요 뒤에서 그렇게 할 수 있습니다

[Given ("I add an accounts team")] 
public void GivenIAddAnAccountsTeam() 
{ 
    GivenIAddAUserCalled("bob"); 
    GivenIAddAUserCalled("bill"); 
} 

BDD는 예제를 제공한다는 점을 잊지 마십시오. 이러한 예제에는 시나리오를 테스트해야한다고 설명하는 데 필요한 모든 것이 있어야하므로 너무 약하게 만들지 마십시오. 또한 관리자가 아니지만 계정 데이터를 볼 수있는 권한이있는 Bob과 같이 인스턴스를 알려진 인스턴스로 만들면 이러한 시나리오를 작성하는 것이 훨씬 쉬워집니다. 이런 식으로 시나리오를 토론 할 때 이미 모든 사람들이 밥이 사용자 목록에 어떻게 나타나야하는지 알고 있습니다.

+0

감사합니다. 이것은 공통점이 있으며 "우수 실행"입니까? 테스트가 약간의 하우스 키핑 ('모든 사용자 지우기 ','밥 (bob)'사용자 추가)을 수행해야한다는 것이 이상하게 보입니다. –

+0

맞습니다. 일반적으로 각 시나리오를 새로 시작할 때 사용자를 지우고 싶지는 않습니다. 그러나 때로는 좀 더 복합적인 접근 방식을 원할 수도 있습니다. '주어진 사용자의 밥'다음에 '주어진 \ 그리고 사용자의 청구서'가 당신의 시나리오를 구축하기를 원할 것입니다. 그리고 이것이 제가 설명하려고했던 것입니다. – AlSki

+0

좋은 소리. Bob에 대한 수표를'Background :'에 넣어야합니까? 나는 최근에 SpecFlow가'Background'를 지원한다는 것을 발견했다. 아니면 뭔가 다른 거니? –

관련 문제