2017-09-11 8 views
0

TestAttribute와 동시에 CategoryAttribute로 동작 할 사용자 지정 NUnit 특성을 만들 수 있는지 궁금합니다. 당신은 하나의 클래스에 대한이 개 기본 클래스를 가질 수 없습니다로TestAttribute와 CategoryAttribute로 동시에 동작하는 NUnit 사용자 지정 속성

public class UnitTestAttribute : TestAttribute, CategoryAttribute, ITestAction 
{ 
    public UnitTestAttribute() : base("UnitTest") 
    public void BeforeTest(ITest test) { /*some logic*/ } 
    public void AfterTest(ITest test) { /*some logic*/ } 
    public ActionTargets Targets => ActionTargets.Test; 
} 

불행하게도,이 작동하지 않습니다

NUnit documentation - Test Attribute NUnit documentation - Category Attribute

은 무엇을 달성하려고하면이 같은 것입니다. 달성하기 위해 노력하고있어 꽤 많은 테스트를 (이 경우) 단위 테스트로 표시하려면 코드 작성량을 최소화해야하지만 동시에 해당 범주에 따라 테스트를 필터링 할 수 있어야합니다 . 그래서 내 현재 코드는

[Test, UnitTest] 
public void SomeTest() { /*doing some stuff*/ } 

[UnitTest] 
public void SomeTest() { /*doing some stuff*/ } 

로 변경됩니다 그리고 난 아직도 다음 명령을

nunit3-console mytest.dll --where "cat == UnitTest" 

를 사용하여 테스트를 실행할 수 및 테스트 탐색기는 찾을 또한 VS 카테고리 등

답변

1

CategoryAttribute는 테스트에서 속성을 설정하지만 속성을 설정하지 않기 때문에 uld는 TestAttribute에서 상속받으며 카테고리 동작을 직접 구현하는 것이 좋습니다.

IApplyToTest 인터페이스를 구현해야합니다. IApplyToTest를 호출 할 때 테스트의 category 속성을 원하는 값에 추가 (설정하지 않음)해야합니다. 이는 이론적으로 추가 카테고리 주석을 사용할 수 있기 때문에 중요합니다.

자세한 내용은 CategoryAttributePropertyAttribute 코드를 참조하십시오. PropertyAttribute은 실제로 대부분의 작업을 수행합니다. PropertyNames.cs

에있는 범주의 상수 값을 사용하십시오.