8

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 中尚不存在该功能 - 如何请求添加此功能?:-)

4

2 回答 2

11

事实上,如果您在功能或场景上使用标签(查找标签部分)NUnit.Framework.Category ,则该属性已受支持。所以如果你写

@LongRunningTests
Feature: MySampleFeature

它将生成正确的Category属性。

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

您可以在github找到内置实现的源代码。

于 2012-06-13T06:43:39.463 回答
2

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

@LongRunningTests 功能:MySampleFeature

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

nunit3-console.exe myTests.dll --where "cat==LongRunningTests"

于 2018-01-24T01:24:28.980 回答