Обойти принудительную типизацию столбцов в CSV-файле при использовании для юнит-теста - PullRequest
0 голосов
/ 30 октября 2019

Я использую файл CSV для ввода данных в мой тест.

[TestMethod]
[DataSource( CsvData, CsvDir + "TC177023.csv", "TC177023#csv", SEQ )]

Файл выглядит примерно так: (другие строки удалены)

something,something,Value,something,something,something
,,0xDEADBEEF,,
,,-12,,
,,0,,
,,0,,
,,0,,

У меня есть один столбец, в котором есть целые числа, и я хотел расширить его до шестнадцатеричных. Поэтому я взял значение из столбца «Значение» и вместо приведения его к типу int

int value = (int)TestContext["Value"];  

я попытался получить доступ к строке, представляющей целое число

string text = TestContext.DataRow["Value"].ToString();  

Но все, что я получилбыла пустая строка. Я не буду беспокоить вас всем, что я пытался выяснить, в чем проблема. Я мог по крайней мере увидеть из проверки объекта TestContext при отладке, что тип столбца действительно vas Int32.

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

Теперь на мой вопрос:

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

1 Ответ

0 голосов
/ 06 ноября 2019

Я исследовал это дальше, и для тех, у кого возникнет тот же вопрос, я напишу его здесь.
И короткий ответ на мой вопрос здесь - нет, я не могу в рамках своих ограничений.

Длинный ответ таков: среда тестирования использует соединение oledb для чтения из файлов Excel и CSV. Существует способ заставить oledb принимать «смешанные значения», отправляя строку «IMEX = 1» в качестве расширенных свойств в строке подключения.
Источник: https://yoursandmyideas.com/2011/02/05/how-to-read-or-write-excel-file-using-ace-oledb-data-provider/
К сожалению, строка подключения установлена ​​внутри фреймворкакод, по крайней мере, в версии с открытым исходным кодом, который доступен на githug, и я не нашел способа контрабанды в строке.

...