我有一组基测试用于测试接口的多个实现。我建模的方式是创建一个带有[Ignore]属性的基础文本夹具。测试夹具的继承和被忽略的基础测试夹具
[TestFixture]
[Ignore]
public class BaseTests
{
// Use your imagination for the actual name
public virtual ITestableThing GetConcrete()
{
return null;
}
// All of my unit tests here
}
然后我写的每一个接口实现一个子类:
public class ConcreteThingTests : BaseTests
{
public override ITestableThing GetConcrete()
{
return new ConcreteThing();
}
}
这工作得很好,因为我拥有所有在一个地方所有实现的测试,和子类只需指定实现。
问题是我必须将[Ignore]属性放在基类上,否则NUnit会尝试运行测试(并失败)。由于这个原因,我的测试结果总是被一系列Ignored测试混淆,尽管这不是什么大不了的事情,但我认为可能会有更好的模式避免忽略测试。
那么,我在执行测试夹具继承错误吗?
我遇到的问题是它将基类与测试类紧密结合在一起。有人想要创建一个新的实现并根据规范对其进行测试,不需要修改基类以添加属性或更改方法。 –