2
我有一堆硒测试作为specflow场景的一部分运行。我现在开始,每个功能停止ChromeDriver一次:每个测试环节启动和停止一次chromedriver
[Binding]
public class WebBrowser
{
public static IWebDriver Current
{
get
{
if (!FeatureContext.Current.ContainsKey("browser"))
{
FeatureContext.Current["browser"] = new ChromeDriver();
}
return (IWebDriver)FeatureContext.Current["browser"];
}
}
[BeforeFeature]
public static void Close()
{
if (FeatureContext.Current.ContainsKey("browser"))
{
Current.Close();
((ChromeDriver) FeatureContext.Current["browser"]).Quit();
}
}
}
测试将运行得更快,如果我可以创建和单位测试会话中运行每个功能运行一次退出chromedriver,而不是一次。
有没有办法配置nunit在每次运行结束时运行一些代码?
如果我删除chromedriver.Quit()
呼叫,则:
- ReSharper的测试运行器运行我的测试中从未报告试运行为完成后,永远地旋转。
- NUnit测试运行器工作正常,但在每次测试会话运行后都会保留一个正在运行的驱动程序窗口。
如果我可以让一些代码在第一次测试运行之前创建chromedriver并在最后一次测试运行之后停止它,那将会很棒。
更新:将[BeforeScenario]
更改为[BeforeFeature]
- 感谢李的指出。
谢谢李,原来的问题仍然存在,但解决这个问题确实提高了速度。 – Brownie 2012-03-26 22:53:30
这是正确的答案。你应该在[AfterFeature]中退出,正如这个答案指出的那样。 – 2012-03-27 12:56:26