C# NUnit自定义属性同时充当TestAttribute和CategoryAttribute
我想知道是否有可能创建自定义NUnit属性,该属性将作为CategoryAttribute,同时作为TestAttribute 我试图实现的是这样的目标:C# NUnit自定义属性同时充当TestAttribute和CategoryAttribute,c#,testing,attributes,nunit,nunit-3.0,C#,Testing,Attributes,Nunit,Nunit 3.0,我想知道是否有可能创建自定义NUnit属性,该属性将作为CategoryAttribute,同时作为TestAttribute 我试图实现的是这样的目标: public class UnitTestAttribute : TestAttribute, CategoryAttribute, ITestAction { public UnitTestAttribute() : base("UnitTest") public void BeforeTest(ITest test)
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;
}
不幸的是,这将不起作用,因为一个类不能有两个基类。
我试图实现的是尽量减少我必须编写的代码量,以便将一些测试标记为单元测试,同时能够根据它们的类别过滤测试。所以我现在的代码
[Test, UnitTest]
public void SomeTest() { /*doing some stuff*/ }
将改为
[UnitTest]
public void SomeTest() { /*doing some stuff*/ }
我仍然可以使用以下命令运行测试
nunit3-console mytest.dll --where "cat == UnitTest"
VS Test explorer也会找到类别等。由于CategoryAttribute除了在测试中设置属性外什么都不做,所以我建议您继承TestAttribute并自己实现类别行为 您必须实现IApplyToTest接口。在对IApplyToTest的调用中,您应该添加“不要将测试的category属性设置为所需的值”。这很重要,因为从理论上讲,您的测试可以有额外的类别注释 有关详细信息,请参阅CategoryAttribute和PropertyAttribute的代码。PropertyAttribute实际上完成了大部分工作。对PropertyNames.cs中的类别使用常量值