Я некоторое время боролся с NUnit framework (недавно перешел из безупречного TestNG и Java). Я пытаюсь добиться одной цели: инициализируйте часть кода только один раз, прежде чем все мои тесты будут запущены, затем инициализируйте часть кода каждый раз, когда начнется мой тест. Для первой задачи я использую атрибут [OneTimeSetUp]
и для второго [SetUp]
. Кажется, что все должно работать идеально, но во время выполнения мой метод [SetUp]
терпит неудачу из-за NullReferenceException
к объекту, который предположительно будет создан в методе атрибута [OneTimeSetUp]
. Интересно, что в режиме отладки все идет хорошо, даже без точек останова. Тесты начинаются нормально. Пожалуйста, смотрите мой фрагмент кода ниже:NUnit v 3.5 и Visual Studio Enterprise 2015 v 4.6.01055 Утилиты не работают при их запуске, но проходят в режиме отладки
[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? Благодаря!
Итак, как объяснить, что режим отладки видит эту «локальную» переменную, тогда как run rime не распознает ее? – President
Трудно сказать без кода, но нет сомнений в том, что «драйвер» в вашей одноразовой настройке не совпадает с настройкой вашей установки - по крайней мере, предполагая, что код, который вы опубликовали, идентичен коду, который вы используете , – Charlie
Логическое мышление, ДА, вы правы. Это просто означает, что объект-драйвер в OneTimeSetUp не совпадает с параметром SetUp. Однако начальный вопрос заключался в том, как режим Debug видит первый объект и использует его для дальнейшего выполнения кода? Мне может потребоваться изучить различия между выполнением кода отладки и выполнить в среде Visual Studio IDE. – President