如何教SpecFlow向我的测试类添加额外的NUnit属性

时间:2012-06-13 06:14:43

标签: nunit specflow class-attributes

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中还没有这种能力 - 如何申请加入? : - )

2 个答案:

答案 0 :(得分:10)

事实上,如果您在功能或方案中使用tags (look for the tags section),则已支持NUnit.Framework.Category属性。所以,如果你写

@LongRunningTests
Feature: MySampleFeature

它将生成正确的Category属性。

但是,如果您想拥有其他自定义属性,则需要编写自定义生成器提供程序并实现IUnitTestGeneratorProvider接口,并在配置的specflow中注册unitTestProvidergeneratorProvider属性部分。

您可以在github找到内置实施的来源。

答案 1 :(得分:1)

添加到@ nemesv的好答案后,添加:

@LongRunningTests 功能:MySampleFeature

要从控制台执行,请执行以下操作:

nunit3-console.exe myTests.dll - 其中“cat == LongRunningTests”