나는 SpecFlow를 배우고 있으며 간단한 Com-Sci 표준 FizzBuzz 프로젝트를 수행하고 있습니다. 주어진 숫자 범위 3로 나누기를 Fizz로 바꾸기 5로 나누기를 버즈로 바꾸기 3과 5로 나누기를 FizzBuzz로 바꿉니다.다중 의존 요구 사항에 대한 SpecFlow의 기능을 만드는 방법
이것은 매우 간단한 응용 프로그램이지만 나에게 질문을 제기했습니다. API에 대한 하나의 메소드 호출에서 모두 해고되는 여러 requiremts를 테스트하는 기능을 작성하는 방법은 무엇입니까? 예.
Feature: FizzBuzz
In order to display Fizz Buzz in range of numbers
As a user I want to be able to see Fizz Buzz replace certain numbers
Scenario: Replace muliples of three and five with Fizz, Buzz or FizzBuzz
Given I have a range of numbers from 1 to 15
When I press Submit
Then the result should be
| Numbers |
| 1 |
| 2 |
| Fizz |
| 4 |
| Buzz |
| Fizz |
| 7 |
| 8 |
| Fizz |
| Buzz |
| 11 |
| Fizz |
| 13 |
| 14 |
| FizzBuzz|
또 다른 질문은 내가 할 경우이 기능이 더욱 의미있게하는 방법이다 바꾸기 방법 코드 FizzBuzz.Replace(1, 100);
다음과 같이 다음과 같이 API 호출
public static string Replace (int min, int max)
{
if (IsDiv3 && IsDiv5) {...}
if (IsDiv3) {...}
if (IsDiv5) {...}
...
}
SpecFlow 나의 기능입니다 것 하나의 기능으로 모든 요구 사항을 집중해야합니다.
편집 두 번째 시나리오를 만들 자마자 첫 번째 시나리오가 실패하기 때문에 여러 시나리오를 만드는 데 어려움을 겪고 있습니다.
scenario 1: replace divisable by 3 with Fizz
Expected = 1 2 Fizz 4 5 Fizz 7 8 Fizz 10 11 Fizz 13 14 Fizz
Actual = 1 2 Fizz 4 5 Fizz 7 8 Fizz 10 11 Fizz 13 14 Fizz (First test)
Actual = 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizz (Second test)
는 두 번째 시나리오는 첫 번째는 현재 실패에 불과 통과
Scenario 2: replace divisable by 5 with Buzz
Expected = 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizz
Actual = 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizz (Second test)
다음 시나리오을 수행하십시오. 나는 시나리오 1, 2, 3을 할 수있는 API를 여는 것이 앱의 좋은 디자인이 될 것이라고 생각하지 않는다.
감사합니다,
내가 다른 사람이 어떻게 이것을 테스트하는 좋은 콘크리트 힌트를 제공 생각합니다. 제 생각에 도덕적 인면은 API 또는 사양에 대한 TDD를 예제로 사용하면 문제가되지 않는다는 것입니다. 실제로 "유효하지 않은"시나리오는 절대로 설명해서는 안됩니다. 시나리오 1은 기능 사양에 해당하지 않으므로 도움이되지 않습니다. 예, 단순한 경우와 다른 측면을 위해 노력해야하지만 시나리오는 사양에 따라 모두 유효해야합니다. 시스템이 진화함에 따라 사양 자체가 변경되는 경우 또 다른 질문입니다. 그런 다음 적절하게 시나리오를 업데이트해야합니다. –