2017-11-22 10 views
0

원래 TestCaseSource 및 사용자 지정 파생 속성 특성을 사용할 때 발생했습니다.NUnit 테스트 속성이 매개 변수화 된 테스트에서 액세스 할 수 없음

[TestFixture] 
public class SomeTestFixture 
{ 
    [Test, Property("SomeProperty", "foo")] 
    public void RegularTest() 
    { 
    } 

    [Test, Property("SomeProperty", "foo"), TestCase(0)] 
    public void ParametrizedTest(int x) 
    { 
    } 

    [TearDown] 
    public void TearDown() 
    { 
     var properties = TestContext.CurrentContext.Test.Properties; 
    } 
} 

properties는 "SomeProperty"해야합니다 : 여기에 증류수 예제가 RegularTest 후 철거 하려던 때 "foo는"그러나 그들은 ParametrizedTest 후 빈 수 있습니다. 그렇다면 리플렉션을 사용하는 것 외에 다른 방법으로 어떻게 해결할 수 있습니까?

답변

2

에 설정된 속성이으로 설정된 NUnit의 기능은 개별 테스트 케이스가 포함 된 제품군에 적용됩니다. 따라서 테스트 케이스가 아닌 제품군의 속성이되기를 원하지 않는 한 그런 식으로 속성을 적용해서는 안됩니다.

이것은 물론 디자인 결함 일 수 있습니다. 최소한 사용자에게는 혼란 스럽습니다.

TestCaseAttribute으로 테스트 사례를 지정하면 description과 같은 잘 알려진 속성을 지정할 수 있지만 새 속성을 추가 할 수 없습니다. 해결 방법은 TestCaseSourceAttribute을 사용하여 사례를 지정하고 각각의 사례에 대해 TestCaseData의 개별 인스턴스를 제공하는 것입니다. TestCaseData 클래스를 사용하면 각 사례에 대해 속성을 설정할 수 있습니다.

틀림없이 이는 그리 편리하지 않지만 해결 방법입니다.