我有一个数据驱动的单元测试,它使用 CSV 文件作为其数据源。我文件中的一列被视为字符串。在我添加一行可以将该列的值解释为日期之前,它工作正常。当我这样做时,前面几行的测试开始失败。似乎在列中有一个“日期”使其将列中的所有值都视为日期。不能被解析为日期的值会被赋予一个 DBNull 值。有没有办法防止这种情况发生?也许通过指定我的数据源中的每一列应该被视为什么类型?
问问题
1190 次
1 回答
3
根据您提供的信息,我建议在值周围尝试双引号(“)。其次,我总是将所有字段视为字符串并在我的代码中调用适当的解析方法。
我在 CSV 文件中执行以下操作:
input,expected
"1600,1","1600,1"
"1600","1600"
一个简单的测试方法读取两个值。输入被解析为 Double,预期被视为字符串。
[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 中进行单元测试的经验有限,因此请随时提出对此答案的改进建议。
这个答案是基于我阅读一些十进制值的问题。这用于测试我目前正在实施的格式化程序。
于 2011-11-07T15:45:41.130 回答