为什么不是xUnit.net的FactAttribute AttributeUsage.Inheritable?

Sco*_*nce 5 c# mbunit nunit mstest xunit.net

以前没有编写单元测试框架,在我看来,如果程序集中的某些类型都需要针对类似的事情进行测试,那么可继承的Fact属性会使编写抽象测试类或测试接口变得更容易.

事实是否不可继承有设计理由吗?我认为使用属性来识别测试方法的其他测试框架(NUnit,MSTest,MbUnit等)也是类似的设计.我错过了什么?

这是xunit(版本1.9.1.1600)的FactAttribute的开头:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class FactAttribute : Attribute
{
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么它看起来不像以下那样:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class FactAttribute : Attribute
{ 
Run Code Online (Sandbox Code Playgroud)

Otá*_*cio 1

我从未听说过属性是可继承的,就像类一样。使用通用测试方法编写基类并将 [Fact] 属性应用于派生类中的方法,您应该没有问题。

  • 我确信他们有一个理由——我只是希望找出它是什么。我只是不热衷于对测试框架进行这样的更改,而不了解为什么要以这种方式实现它的更多背景。 (2认同)