2011-03-14 20 views
2

我有一個數據驅動的單元測試,它使用CSV文件作爲其數據源。我的文件中的一列是爲了被視爲一個字符串。它工作正常,直到我添加一行可以將該列的值解釋爲日期。當我這樣做時,早期行的測試開始失敗。看起來,在該列中有一個「日期」使其將列中的所有值視爲日期。那些不能被解析爲日期的值會被賦予一個DBNull值。 有沒有辦法防止這種情況發生?也許通過指定我的數據源中的每個列應該被視爲什麼類型?如何使用CSV數據源控制數據驅動的單元測試中的列的類型?

回答

2

根據您所提供的信息,我建議嘗試雙打圍繞該值的引號(「)。 其次,我總是把所有的領域如String,並在我的代碼調用適當的解析方法。

我不要在CSV文件如下:

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

一個簡單的測試方法,同時讀取值的的輸入被解析爲一個雙和預期被視爲一個字符串

[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中使用單元測試的經驗有限,所以請隨時提出對此答案的改進建議。

這個答案是基於我讀取一些小數值的問題。這用於測試我正在執行的格式化程序。

相關問題