我在.NET环境中使用Selenium WebDriver。我正在使用NUnit测试运行器中的WebDriver:
[Test]
public static void Should_register_user()
{
IWebDriver driver = new FirefoxDriver();
...
driver.Quit();
}
它工作得很好。如果我从MSBuild脚本运行这样的测试:packages \ NUnit.Runners.2.6.2 \ Tools \ nunit-console.exe / nologo S022.SeleniumTests.dll /xml=NUnit.Report.xml(不管我是不是使用NUnit社区任务或执行任务)。 测试执行但它失败了Firefox浏览器仍然打开,脚本中的执行等待我关闭浏览器窗口。当我这样做时,脚本会进一步执行。
这是Selenium所说的:
ProcessModel: Default DomainUsage: Single
Execution Runtime: net-3.5
.F
Tests run: 1, Errors: 0, Failures: 1, Inconclusive: 0, Time: 10,3118323 secon
ds
Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0
Errors and Failures:
1) Test Failure : S022.SeleniumTests.RegistrationTests.Should_register
_user
Expected string length 6 but was 11. Strings differ at index 0.
Expected: "Log-in"
But was: "News"
-----------^
at S022.SeleniumTests.RegistrationTests.Should_register_user() in S022.SeleniumTests\T
ests\RegistrationTests.cs:line 22
如果测试通过,则执行按预期进行。
我做错了什么?
答案 0 :(得分:4)
您正在[Test]
方法中创建和销毁浏览器实例。当测试用例失败时,会抛出异常,并且永远不会执行对driver.Quit()
的调用。您可能希望在[SetUp]
方法中创建驱动程序实例,并在driver.Quit()
方法中调用[TearDown]
。
答案 1 :(得分:-1)
我认为一旦你的测试用例失败,垃圾收集器仍然会拿起你的孤儿对象,但是如上所述,在tearDown()方法中做得更清楚。