我有一个数据驱动的单元测试,它使用CSV文件作为其数据源。我文件中的一列意味着被视为字符串。它工作正常,直到我添加一行,其中该列的值可以解释为日期。当我这样做时,早期行的测试开始失败。看来列中有“日期”使其将列中的所有值视为日期。然后,将无法解析为日期的值赋予DBNull值。 反正有没有阻止这个?也许通过指定数据源中每列应该被视为什么类型?
答案 0 :(得分:2)
根据您提供的信息,我建议在值周围尝试双打引号(“)。 其次,我总是将所有字段视为String,并在我的代码中调用适当的解析方法。
我在CSV文件中执行以下操作:
input,expected
"1600,1","1600,1"
"1600","1600"
一个简单的测试方法读取两个值。输入被解析为Double,而expect被视为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中使用单元测试的经验是有限的,所以请随时建议改进这个答案。
这个答案是基于我读取一些小数值的问题。这用于测试我目前正在实现的格式化程序。