我必须在测试执行之前和之后运行数据库脚本,但是如果我在测试运行之前提到它会为每个线程运行多次,但我只需要在测试执行中运行一次意味着它会成为所有线程的顶部
例如:
挂钩文件
[BeforeTestRun]
public static void BeforeTestrun()
{
Console.WriteLine("run before test");
}
[AfterTestRun]
public static void AfterTestrun()
{
Console.WriteLine("run after test");
}
在默认.sr配置文件中
线程数=3
运行构建时,其显示如下
- Thread0:“测试前运行”
- 线程1:“测试前运行”
- 线程2:“测试前运行”
- Thread0:“测试后运行”
- 线程1:“测试后运行”
- 线程2:“测试后运行”
但我必须在所有线程之上和所有线程之后只运行一次
如果您使用 SpecFlow+Runner 且测试线程隔离模式为Process
or AppDomain
执行BeforeTestRun
and AfterTestRun
每个线程都会发生钩子。
这是预期的行为。其原因是这些隔离模式下线程之间的内存隔离。
要在整个测试运行中只执行一次某些内容,您必须使用自己的部署步骤。一个例子在这里:https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/tree/master/CustomDeploymentSteps https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/tree/master/CustomDeploymentSteps
如果其他测试运行者或在SharedAppDomain
,请在 GitHub 上打开问题。
全面披露:我是 SpecFlow 和 SpecFlow+ 的开发人员之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)