2014-02-12 5 views
3

SpecFlow 문서를 검토하면서 필자의 지각이 잘못된 것인지 파악하려고합니다. 기능 당 완전히 다른 여러 시나리오를 지정하고 싶습니다. 예를 들어Specflow : 기능마다 여러 시나리오 지정

:

Feature: Serve coffee 
    Coffee should not be served until paid for 
    Coffee should not be served until the button has been pressed 
    If there is no coffee left then money should be refunded 

    Scenario: Buy last coffee 
    Given there are 1 coffees left in the machine 
    And I have deposited 1$ 
    When I press the coffee button 
    Then I should be served a coffee 

나는 "커피를 담아"기능에서 다른 시나리오를 확인하고 싶은 경우 어떻게? 예를 들어, 돈을 지불했지만 버튼을 5 분 동안 누르지 않은 시나리오.

몇 가지 시나리오가 있거나이 시나리오 개요를 사용해야합니까?

감사합니다.

+1

이러한 의문을 가지고있는 이유는 매우 광범위한 기능 정의 때문인 것으로 생각됩니다. 귀하의 기능을 설명하기 위해 '원하는대로 ...'패턴을 사용하여 시도해보십시오. 그러면 귀하의 시나리오를 분리 된 상태로 유지하는 데 도움이된다는 것을 알게 될 것입니다. – AlSki

답변

2

논리적으로 동일한 영역에있는 한 기능 당 여러 시나리오가 좋습니다. 다른 유스 케이스를 다루려고한다면 아마도 새로운 기능으로 제안 할 것입니다. 귀하의 경우 두 시나리오가 같은 기능 아래 잘 맞을 것으로 보입니다.

시나리오 개요는 NUnit의 TestCase과 유사하며 동일한 시나리오 구조가 다른 매개 변수를 필요로 할 때만 사용합니다.


SpecFlow github 사이트에는 시나리오 개요 here에 대한 좋은 설명서가 있습니다. 아래 코드 샘플을 요약 해 보겠습니다. 기능에

을 감안할 때 두 가지 시나리오 :

Scenario: eat 5 out of 12 
    Given there are 12 cucumbers 
    When I eat 5 cucumbers 
    Then I should have 7 cucumbers 

Scenario: eat 5 out of 20 
    Given there are 20 cucumbers 
    When I eat 5 cucumbers 
    Then I should have 15 cucumbers 

당신은 개요를 사용하여 부품을 반복의 파라미터를 할 수 있습니다

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

    Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 

이 윤곽은 시나리오가 당신의 파라미터를하려고있는 정의를 대체합니다.

+0

어떻게 할 수 있는지 직접 알려주십시오. 하나의 시나리오에 대해서만 doc을 찾거나 scenarioOutline을 사용하여 "다중"을 찾았습니다. 고맙습니다! – Nir

+0

@Nir 새로운 시나리오 :'태그를 지정하면 여러 시나리오를 추가 할 수 있습니다. 시나리오 개요는 해당 사이트의 SpecFlow 문서에 자세히 설명되어 있습니다. 매개 변수화하려는 항목을 실제로 이해하지 못하면 코드 샘플을 제공 할 수 없습니다. 좀 봐봐. –

+0

감사합니다 아담, 좀 더 상세히하려고합니다 : 돈을 지불했지만 버튼을 5 분 동안 누르지 않은 시나리오를 추가하려면이 기능이 다른 기능 또는 다른 시나리오로 간주됩니까? – Nir

3
Feature: Serve coffee 
    Coffee should not be served until paid for 
    Coffee should not be served until the button has been pressed 
    If there is no coffee left then money should be refunded 

Scenario: Buy last coffee 
    Given there are 1 coffees left in the machine 
    And I have deposited 1$ 
    When I press the coffee button 
    Then I should be served a coffee 

Scenario: Store credit until a coffee is selected 
    Given I have deposited 1$ 
    And I have left the machine for 5 minutes 
    When I press the coffee button 
    Then I should be served a coffee 

당신이 물어 보는 것은 기능 파일에서 specflow 시나리오를 사용하는 표준 방법입니다. 따라서 대답은 "예, 특정 기능 (이 경우 커피가 언제 어떻게 제공되는지)과 관련된 시나리오를 단일 기능 파일에 넣으십시오"입니다.

커피 기계의 기능 파일이 확장되어 상당히 다른 기능을 설명하는 추가 시나리오가있는 경우 다른 파일로 옮깁니다.

예컨대

Feature: Coffee Machine Advertising video panel 

Scenario: While my coffee is being served, I should be shown a 15 second advert. 
+0

감사합니다.필자는 feature 파일에 몇 가지 시나리오를 넣으려고했지만 SpecFlow는 하나 이상의 시나리오에 대한 스펙 정의를 생성하지 않습니다. – Nir

+2

Specflow는 여러 개의 'Feature'태그를 허용하지 않지만 하나의 파일에 여러 개의 'Scenario'태그를 허용합니다. – perfectionist