我想知道是否可以创建自定义NUnit属性,该属性将作为CategoryAttribute并与TestAttribute同时运行。
NUnit documentation - Test Attribute NUnit documentation - Category Attribute
我想要实现的是这样的:
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;
}
不幸的是,这不起作用,因为单个类不能有2个基类。 我想要实现的几乎是最小化我必须编写的代码量,以便将某些测试标记为(在这种情况下)单元测试,同时能够根据其类别过滤测试。所以我目前的代码
[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也会找到类别等。
答案 0 :(得分:1)
由于CategoryAttribute除了在测试中设置属性之外什么都不做,我建议你继承TestAttribute并自己实现类别行为。
您必须实现IApplyToTest接口。在对IApplyToTest的调用中,您应该将测试的category属性添加(不设置)到您想要的值。这很重要,因为理论上你的测试可以有额外的类别注释。
有关详细信息,请参阅CategoryAttribute
和PropertyAttribute
的代码。 PropertyAttribute
实际上完成了大部分工作。使用您在PropertyNames.cs