【发布时间】:2020-02-11 03:41:05
【问题描述】:
我正在尝试从代码而不是通过测试资源管理器或命令行运行 SpecFlow 场景。有人设法做到这一点吗?
从一个场景中,我可以通过递归提取方法名和测试方法,但是我不能运行这个场景方法。它似乎需要适当的初始化和拆卸,但我无法做到这一点。
我的第一个想法是使用TechTalk.SpecFlow.TestRunner类,但它似乎没有场景选择方法。
编辑我为什么要这样做:
我们想从 TFS 运行特定场景。在 TFS 中将 TestMethods 连接到 WorkItems 非常麻烦,因为:
- 您只能将一种测试方法分配给一个工作项
- 对于每个工作项,您必须搜索方法名称,这本身就是一件麻烦事,因为列表很长,有很多规范流场景。
- 当您的 specflow 场景获得不同的名称时(这种情况经常发生),TFS 无法再找到正确的方法
- Specflow 场景大纲几乎无法使用,但它们是一个非常强大的功能。
我想创建一种机制,让每个自动化工作项都分配相同的方法。此方法提取工作项 id 并搜索并执行带有此工作项标记的场景。
【问题讨论】:
-
我认为从代码中运行场景有点棘手,因为您必须设置一个测试运行环境,我认为这可能有点复杂。你能简要解释一下你想通过这样做实现什么吗?也许有一种更简单的方法来解决您的问题,而不是通过代码运行场景。
-
@realtime,谢谢提问,我加了解释。
-
感谢您的解释!抱歉,这目前有点跑题了。但我不明白将 WorkItems 连接到 TestMethods 背后的意义。如果我有一个 WorkItem,它会解决某个错误,也许是我想要拥有的功能。然后我想要一个单独的测试用例来专门解决这个问题。仅此一项就对可追溯性有很大帮助!一个测试用例(在我的世界里)等于一个特性文件。所以我将功能(或文件)连接到 WorkItems。不再关心场景名称的更改,您需要维护的跟踪连接也少了很多。
标签: c# unit-testing specflow