2014-09-25 6 views
0

Я запускаю кодированный ui-тест в Visual Studio 2013 в сетку данных WPF, используя значения из файла csv. Когда у меня есть пустое значение в файле csv, например ,,, он отлично работает для полей ввода, но когда дело доходит до ввода пустой строки в поле в сетке данных, сбой кода с ошибкой со следующей ошибкой:Ошибка кодированного пользовательского интерфейса в Visual Studio 2013 при вводе пустого значения из csv в сетку данных WPF

Исключение типа «System.ArgumentNullException» произошло в Microsoft.VisualStudio.TestTools.UITesting.dll, но не было обработано в коде пользователя Дополнительная информация: Значение не может быть null.

Когда я запускаю тест вручную, я могу отправить форму без этого значения, поэтому я знаю, что это не обязательно для пользовательского интерфейса, код просто кажется падающим, если значение не отправлено. Если я введу значение на csv, тест будет запущен, но я намеренно хочу, чтобы поле было пустым.

Кто-нибудь сталкивался с этой проблемой раньше, и если это так, я мог бы либо адаптировать CSV, либо код, чтобы заставить это работать? Я также пробовал , «»,, и это тоже не сработало.

Благодаря

+0

В промежутке времени я обошел это, добавив предложение if из каждой записи, чтобы проверить, является ли значение в csv isNullOrWhiteSpace, и если да, то пропустите попытку ввести значение. Мне все равно было бы интересно узнать, есть ли у кого-то лучшее предложение, так как это обходное решение делает мой код очень большим. – Helen

+0

Что именно не удается? Он читает значение из источника данных или записывает его в сетку? – AdrianHHH

ответ

0

Я думаю, что так, как вы это делаете (используя метод isNullOrWhiteSpace, чтобы определить, следует ли пропустить ввод значения) является правильным способом. Если вы не хотите, чтобы написать, что каждый раз, когда вы вводите значения в поле, вы могли бы написать метод расширения вместо:

public static void EnterValue(UITestControl control, string inputString) 
{ 
    if (!String.IsNullOrWhiteSpace(inputString) 
     Keyboard.SendKeys(control, inputString); 
} 

, а затем просто позвонить, что, когда вы хотите ввести текст:

string csvValue = /*value from the .csv file*/ 
StaticUtilityClass.EnterValue(myControl, csvValue); 

Не новаторское изменение, но оно сократило бы количество раз, когда вам нужно написать этот if-statement.

+0

спасибо, что это значительно сокращает длину моего кода, спасибо за вашу помощь – Helen