2011-11-14 4 views
0
이것은 태그 설정에 내 이전 질문에 대한 후속 조치입니다

: Can I use tags in SpecFlow to determine the right environment to use?을 그 태그에서 변수를 설정 : 내가 설정 한 How to set up a URL variable to be used in NUnit/SpecFlow framework나는 잘못된 결과를 얻을

NUnit 테스트를 채우기에 도움이되는 변수가 있지만, NUnit 러너가 첫 번째 태그에 맞는 테스트를 찾으면 두 번째 태그의 설정으로 테스트를 실행합니다. 태그는 어떤 테스트를 실행할지 알 수있을뿐만 아니라 사용할 변수가 무엇인지를 아는 것이 중요하기 때문에 문제가됩니다. 내가 실행 @second 모든 것이 잘 경우

@second

@first @second

@first :

그래서 나는 다음과 같은 태그가있는 경우. @first를 실행하면 @first는 정상적으로 작동하지만 @first가 있기 때문에 @first @second 시나리오가 실행되는 시나리오가 발생하면 @first가 있기 때문에 @second에 대한 매개 변수를 사용합니다 . NUnit-Console을 통해 DLL을 실행하고 있고 SpecFlow를 통해 테스트를 작성했기 때문에 문제가 어디에 있는지 알 수 없습니다.

누구나 이런 식으로 테스트를 설정하는 것에 대한 조언이 있습니까?

답변

1

당신은 매우 구체적인하지했지만,이 같은 기능은 파일이 들린다 당신 "이 모든 테스트를 실행하여 NUnit를 실행하는 테스트를 선택하는 것 같습니다

@first 
Scenario: A - Something Specific happens under the first settings 
    Given ...etc... 

@second 
Scenario: B - Something Specific happens under the second settings 
    Given ...etc... 

@first @second 
Scenario: C - Something general happens under the first and second settings 
    Given ...etc... 

첫 번째 "카테고리.

이 같은 이벤트 정의 설정 한 경우 : 당신이 다음 FirstSettings()을 시나리오 C를 실행하고 SecondSettings()가 전에 실행할 경우

[BeforeFeature("first")] 
public static string FirstSettings() 
{ ... } 

[BeforeFeature("second")] 
public static string SecondSettings() 
{ ... } 

합니다. 이것은 @second 범주를 사용하여 NUnit에서 실행할 테스트를 선택했는지 여부와는 관계가 없습니다.

이것은 두 태그로 테스트에 적용된 두 번째 설정을 보는 이유입니다. 두 번째 설정이 첫 번째 설정을 덮어 쓰는 것이 예상됩니다. 맞습니까?

이와 같은 테스트를 설정하는 유일한 방법은 이벤트를 특정 태그에 바인딩하는 것이 유용 할 수 있지만 가능한 한 적게 사용해야한다는 것입니다. 대신 개별 단계 정의를 다시 사용할 수있게 만들고 가능하면 Given 단계로 테스트 환경을 설정하십시오.

+0

네, 그게 무슨 일 이죠. 나는 이것을 몇 번 물어 봤고 그 세부 사항을 여기에 두는 것을 잊어 버렸다. 하지만 당신이 옳다. 내가하고있는 일이다. 테스트를 실행하고 싶은 환경이 두 가지 있지만 구성이 다르므로 Given Steps를 조사해야하지만 두 환경 모두에서 테스트가 정확히 동일하다. 노력하고있는 방식이 가장 쉬운 것처럼 보였습니다. – MichaelF

+0

저는 실제로 specflow에 대한 실질적인 지식을 구축하려고합니다. 이 문제에 대한 새로운 질문이나 추가 사항으로 문제를 더 이상 공유하고 싶다면 아이디어를 전달해 드리겠습니다. – perfectionist