如何教SpecFlow增加额外属性的NUnit我的测试类(How to teach SpecFlow

2019-07-29 21:30发布

SpecFlow是伟大的-它可以帮助我们很做正确的集成测试。

有一两件事我不知道是是否有办法告诉SpecFlow增加额外的NUnit的属性,它会在功能代码隐藏文件中的测试类。

现在,我的测试类获取生成的是这样的:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.8.1.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[NUnit.Framework.TestFixtureAttribute()]
[NUnit.Framework.DescriptionAttribute("Some action description here")]
public partial class MySampleFeature
{  
   ......
}

是否有SpecFlow没有办法告诉它添加额外的NUnit的属性来定义试验的范畴 - 就像这样:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.8.1.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[NUnit.Framework.TestFixtureAttribute()]
[NUnit.Framework.DescriptionAttribute("Some action description here")]
[NUnit.Framework.Category("LongRunningTests")]   <== add this "Category" attribute
public partial class MySampleFeature
{  
   ......
}

手动添加此所生成的代码背后,是浪费 - 下一次SpecFlow重新生成隐藏的代码,我要记住做一遍(和有机会,我会忘了)。

如果该功能尚未出现在SpecFlow - 如何请愿此添加? :-)

Answer 1:

事实上, NUnit.Framework.Category如果你使用属性已经支持标签(寻标签部分)上的功能或方案。 所以,如果你写

@LongRunningTests
Feature: MySampleFeature

它会产生适当的Category属性。

但是,如果你想有更多的自定义属性,你需要编写一个自定义生成器供应商,实现IUnitTestGeneratorProvider接口,并与注册unitTestProvider的generatorProvider在你的配置的specflow部分属性。

你可以找到建于实现在源github上 。



Answer 2:

要添加到@ nemesv的很好的答案,一旦你加入:

@LongRunningTests特点:MySampleFeature

从控制台执行,这样做:

nunit3-console.exe myTests.dll --where “猫== LongRunningTests”



文章来源: How to teach SpecFlow to add additional NUnit attributes to my test class