我以前没有写过单元测试框架,在我看来,如果程序集中的某些类型都需要测试类似的东西,那么可继承的事实属性将使编写抽象测试类或测试接口变得更容易。
是否存在无法继承事实的设计原因?我认为使用属性来标识测试方法的其他测试框架(NUnit、MSTest、MbUnit等)的设计也是类似的。我遗漏了什么?
下面是xunit的FactAttribute (版本1.9.1.1600)的开始:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class FactAttribute : Attribute
{我试图理解为什么它看起来不像下面这样:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class FactAttribute : Attribute
{ 发布于 2012-07-31 20:39:44
FactAttribute是可继承的。
看看这篇文章:http://iridescence.no/post/Extending-xUnit-with-a-Custom-ObservationAttribute-for-BDD-Style-Testing.aspx
我认为它有时真的很有用。
发布于 2012-09-22 06:35:55
我经常在我的测试中使用模板模式(这似乎就是您想要完成的),它在xUnit.net中工作得很好。
public abstract class TestBase
{
[Fact]
public void Verify()
{
// Step 1
// Step 2
// Overridable step 3
DoStuff();
// Assert
}
protected abstract void DoStuff();
}
public class Test1 : TestBase
{
protected override void DoStuff()
{
// Test1 variation
}
}
public class Test2 : TestBase
{
protected override void DoStuff()
{
// Test2 variation
}
}Verify执行两次--一次是在实例Test1上,另一次是在Test2实例上。
希望这能有所帮助。
发布于 2012-07-19 00:23:41
我从来没有听说过属性是可继承的,就像类一样。不过,使用通用测试方法编写基类并将事实属性应用于派生类中的方法应该没有问题。
https://stackoverflow.com/questions/11545941
复制相似问题