为什么我的Specflow [AfterTestRun]挂钩被调用两次

时间:2016-03-31 17:04:33

标签: c# testing automated-tests specflow specrun

[AfterTestRun]

我的这个钩子被叫了两次。

我的C#代码是正确的,并且在每个 Scenario 的末尾我将结果保存到Concurrent Bag。

然后我使用 [AfterTestRun] 挂钩来调用Concurrent Bag并将数据保存到数据库中。我看到重复的数据,所以我认为它被调用了两次。

其他信息:
我正在使用SpecRun与以下配置文件并行运行我的测试

  

执行stopAfterFailures =" 1" RetryCount重=" 0" testThreadCount =" 3" testSchedulingMode ="序列"

已安装的软件包
SpecFlow版本2.0.0
SpecRun.SpecFlow 1.3.0
SpecRun.Runner 1.3.0

我正在使用SpecRun.SpecFlow来运行我的测试。

此外,如果每个功能中有多个场景,此挂钩将如何表现?目前我有1个。

由于

1 个答案:

答案 0 :(得分:1)

步骤在specflow中是全局的,继承以获得步骤重用是不必要的。实际上,如果你继承了步骤类,那么它们包含的步骤最终会被复制,你会看到这里遇到的问题。有关其他详细信息,请参阅this answer

简单的解决方案是将[BeforeScenario]方法放入它们自己的类中,并且不要让步骤类继承它。如果您需要在步骤和之前/之后的方案之间共享状态,请使用其中一种状态共享技术outlined here