NUnit v 3.5和Visual Studio Enterprise 2015 v 4.6.01055单元测试在运行时失败,但在调试模式下传递

时间:2016-12-31 12:42:45

标签: visual-studio-2015 nunit

我在 NUnit 框架(最近从完美的TestNG和Java转型)中挣扎了一段时间。我正在努力实现一件事:在我的所有测试运行之前初始化一段代码,然后在我的测试开始时初始化其他一段代码每次。对于第一个任务,我使用[OneTimeSetUp]属性,第二个[SetUp]。似乎一切都应该完美,但在运行时我的[SetUp]方法因对象NullReferenceException而失败,假设在[OneTimeSetUp]属性方法中创建。有趣的是,在调试模式下一切顺利,即使没有断点。测试正常开始。请参阅下面的代码段:

[OneTimeSetUp]
 public void taskBeforeAllTests()
        {
            IWebDriver driver = new ChromeDriver("PathToChromeExecutable");
            driver.navigate().GoToURL("http://www.google.com");
        }    

然后我想在打开的Chrome浏览器中打开新标签:

[SetUp]
public void taskBeforeEachTests()
{
            IJavaScriptExecutor jse = ((IJavaScriptExecutor)driver);
            jse.ExecuteScript("window.open();");
}

所以问题是每当我调用IJavaScriptExecutor jse = ((IJavaScriptExecutor)driver)代码行时,测试在 NullReferenceException 的驱动程序对象上失败。我的问题是VS专家以及之前遇到过这种情况的人。是否需要在VS设置/选项中进行任何配置?从我看到的,我的代码片段在调试模式下按预期工作,因此可能需要在Visual Studio本身进行一些调整?谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道“完美”但你的一次性设置初始化一个局部变量“驱动程序”,它立即超出范围。您的设置正在使用另一个“驱动程序”,可能是一个未初始化的成员变量。