如何使用MSTest从命令行运行SpecFlow方案?

我有Visual Studio 2010,我们有两个VS解决方案。 第一个是Web应用程序,第二个是严格的SpecFlow测试。 让两个Visual Studio实例同时运行只是为了运行SpecFlowfunction正在吃掉所有可用的RAM,导致速度变慢。

我已经在Google上和StackOverflow上进行了一些搜索,并在MSTest命令行工具上仔细阅读了MS文档,但我还没有找到答案。 完整的SpecFlow测试套件需要大约45分钟才能完成,我真的只需要运行几个场景。

我想知道是否有办法使用MSTest从命令行运行单独的SpecFlowfunction,甚至是个别方案?

在场景后面,specflow测试只是常规的mstestunit testing。 因此,您应该能够以相同的方式运行它们,例如:

要运行特定方案:

mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff 

要运行多个特定方案,您可以多次使用/ test标志:

 mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff /test:GivenMyScenarioWhenIDoSomemthingElse 

运行function

 mstest /testcontainer:tests.dll /test:MyFeatureName 

例如,如果使用@MyTag在场景中添加标签,则还可以使用该选项

 /category:MyTag to filter down the scenarios to run. 

请查看您的function文件背后生成的代码,以获得事物实际工作的线索,如果您熟悉mstest,它应该非常简单。

有一个名为“Specrun.Specflow”的nuget包下载。 它将更改你的app.config并设置unitTestProvider name =“SpecRun”,这样你就可以删除unitTestProvider name =“MSTest”或“NUnit”,现在在保存App.config更改时,visual studio会提示你重新生成你的特征文件,单击是并立即构建解决方案,您将看到的是您的测试文件已重新生成。 现在,在命令提示符下转到C:\ Users \\ Documents \ Visual Studio 2015 \ Projects \并键入runtests.cmd,它应该直接触发所有function文件。

我尝试了标签技术,但它没有用,我使用的是旧版本的SpecFlow。 所以,我去了一个与特征文件相关的.feature.cs文件并搜索了TestMethodAttribute()

 [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] 

我在此基础上添加了TestCategory属性,如下所示:

 [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategory("MyCat")] 

构建和编译,命令就像一个魅力

 /Category:MyCat 

我希望有人能找到有用的答案。