我在 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本身进行一些调整?谢谢!
答案 0 :(得分:1)
我不知道“完美”但你的一次性设置初始化一个局部变量“驱动程序”,它立即超出范围。您的设置正在使用另一个“驱动程序”,可能是一个未初始化的成员变量。