2016-12-31 5 views
0

Я некоторое время боролся с 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? Благодаря!

ответ

1

Я не знаю о «безупречном», но ваша единовременная настройка инициализирует локальную переменную «драйвер», которая сразу выходит из сферы действия. Ваша установка использует другой «драйвер», предположительно, переменную-член, которая не инициализируется.

+0

Итак, как объяснить, что режим отладки видит эту «локальную» переменную, тогда как run rime не распознает ее? – President

+0

Трудно сказать без кода, но нет сомнений в том, что «драйвер» в вашей одноразовой настройке не совпадает с настройкой вашей установки - по крайней мере, предполагая, что код, который вы опубликовали, идентичен коду, который вы используете , – Charlie

+0

Логическое мышление, ДА, вы правы. Это просто означает, что объект-драйвер в OneTimeSetUp не совпадает с параметром SetUp. Однако начальный вопрос заключался в том, как режим Debug видит первый объект и использует его для дальнейшего выполнения кода? Мне может потребоваться изучить различия между выполнением кода отладки и выполнить в среде Visual Studio IDE. – President