Как управлять типом столбца в модульном тесте, управляемом данными, с источником данных CSV? - PullRequest
2 голосов
/ 14 марта 2011

У меня есть управляемый данными модульный тест, который использует файл CSV для своего источника данных.Один из столбцов в моем файле должен рассматриваться как строка.Это работает нормально, пока я не добавлю строку, где значение для этого столбца можно интерпретировать как дату.Когда я делаю это, тесты для более ранних строк начинают проваливаться.Похоже, что наличие «даты» в столбце делает все значения в столбцах датами.Значения, которые не могут быть проанализированы как дата, затем получают значение DBNull.Есть ли способ предотвратить это?Может быть, указав, к какому типу относится каждый столбец в моем источнике данных?

1 Ответ

2 голосов
/ 07 ноября 2011

На основании предоставленной вами информации я бы предложил использовать двойные кавычки (") вокруг значения. Во-вторых, я всегда рассматриваю все поля как String и вызываю соответствующий метод синтаксического анализа в своем коде.

В файле CSV я делаю следующее:

input,expected
"1600,1","1600,1"
"1600","1600"

Простой метод проверки считывает оба значения. Входные данные анализируются как Double, а ожидаемый обрабатывается как String.

[DeploymentItem("UnitTest\\TestData.csv"), 
 DeploymentItem("TestData.csv"), TestMethod(),
       DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
                  "|DataDirectory|\\TestData.csv", 
                  "TestData#csv", 
                  DataAccessMethod.Sequential)
 ]
 public void Test()
 {
    double input= System.Double.Parse(TestContext.DataRow["input"].ToString());
    string expected = TestContext.DataRow["expected"].ToString();
    Assert.AreEqual(input, expected);
 }

Я знаю, что это очень простой пример, и, возможно, я делаю вещи, которые не советуют. Мой опыт работы с модульным тестированием в VS2010 ограничен, поэтому не стесняйтесь предлагать улучшения для этого ответа.

Этот ответ основан на моей проблеме прочитать некоторые десятичные значения. Это для тестирования форматера, который я сейчас внедряю.

...