我正在考虑创建一个派生自Xunit.Trait
的属性,我可以将其归因于我的事实。这个想法是提供的类型的名称被设置为特征值。这些方面的东西:
[Tests(typeof(Foo.Bar))] // would be equivalent to [Trait("Type", "Foo.Bar"]
[Fact]
public void TestsFooBarConstructor()
{
var x = new Foo.Bar();
// ...
}
知道Xunit.Fact
属性可以进一步专门化,我希望它与Trait
属性相同并创建以下属性类
public class TestsAttribute : TraitAttribute
{
public TestsAttribute(Type t)
: base("Type", t.FullName)
{
}
}
直到我发现Trait
已被封存。这个设计有原因吗?
答案 0 :(得分:2)
通过查看测试而不必运行它来确定代码的意图意味着用户可以在调用编译器之前更早地理解测试意图。
许多新属性是密封的(而不是使用继承),因为他们希望能够通过自动化工具支持环境中的测试发现(代码甚至可能无法编译,所以它&#39 ; s使用抽象语法树完成,如Resharper,CodeRush,Roslyn等......
查看xunit contributors here
的详细信息