C# 从代码运行SpecFlow场景
我试图从代码中运行SpecFlow场景,而不是通过testexplorer或命令行。有人做到了吗 从一个场景中,我可以用递归提取方法名和测试方法,但是我不能运行这个场景方法。它似乎需要一个适当的初始化和拆卸,但我无法做到这一点 我的第一个想法是使用C# 从代码运行SpecFlow场景,c#,unit-testing,specflow,C#,Unit Testing,Specflow,我试图从代码中运行SpecFlow场景,而不是通过testexplorer或命令行。有人做到了吗 从一个场景中,我可以用递归提取方法名和测试方法,但是我不能运行这个场景方法。它似乎需要一个适当的初始化和拆卸,但我无法做到这一点 我的第一个想法是使用TechTalk.SpecFlow.TestRunner类,但它似乎没有场景选择方法 编辑我为什么要这样做: 我们希望从TFS运行特定场景。将TestMethods连接到TFS中的工作项非常麻烦,因为: 只能将一个testmethod分配给一个wor
TechTalk.SpecFlow.TestRunner
类,但它似乎没有场景选择方法
编辑我为什么要这样做:我们希望从TFS运行特定场景。将TestMethods连接到TFS中的工作项非常麻烦,因为:
- 只能将一个testmethod分配给一个workitem
- 对于每个workitem,您必须搜索方法名称,因为列表很长,有很多specflow场景,搜索方法名称本身就是一个麻烦
- 当您的specflow场景获得不同的名称时(这种情况经常发生),TFS将无法再找到正确的方法
- Specflow场景大纲实际上无法使用,而它们是一个非常强大的功能
我想创建一种机制,其中每个自动工作项都会被分配相同的方法。此方法提取工作项id并搜索,然后执行带有此工作项标记的场景 我也遇到了类似的问题,因为我的测试在场景之间有一些依赖关系(我很遗憾,但它为每个功能文件节省了大量的复制粘贴行)。当然,在大多数情况下,我会坚持使用孤立的场景 我使用了反射
当然,您必须根据需要设置(私有)字段“testRunner”。我认为从代码中运行场景有点棘手,因为您必须设置testRunner环境,我认为这可能有点复杂。你能简单地解释一下你想通过这样做实现什么吗?也许有一种更简单的方法来解决您的问题,而不是通过代码运行场景。@realtime,谢谢您的提问,我添加了一个解释。谢谢您的解释!抱歉,这篇文章目前有点离题。但我不理解将工作项连接到测试方法背后的意义。如果我有一个WorkItem,它会解决某个bug,可能是我想要的特性。然后我想要一个单独的测试用例,专门解决这个问题。单凭这一点就可以在可追溯性方面大有裨益!单个测试用例(在我的世界中)等于一个功能文件。因此,我将功能(或文件)连接到工作项。场景名称的更改不再重要,您需要维护的跟踪连接也少了很多。