Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用CSV数据源控制数据驱动单元测试中的列类型?_.net_Unit Testing_Csv_Data Driven - Fatal编程技术网

.net 如何使用CSV数据源控制数据驱动单元测试中的列类型?

.net 如何使用CSV数据源控制数据驱动单元测试中的列类型?,.net,unit-testing,csv,data-driven,.net,Unit Testing,Csv,Data Driven,我有一个数据驱动的单元测试,它使用CSV文件作为数据源。我的文件中的一列将被视为字符串。它工作正常,直到我添加一行,其中该列的值可以解释为日期。当我这样做时,前面几行的测试开始失败。在列中有一个“日期”似乎会使它将列中的所有值都视为日期。无法解析为日期的值将被赋予DBNull值。 有没有办法防止这种情况发生?也许通过指定我的数据源中的每一列应被视为什么类型?根据您提供的信息,我建议尝试在值的周围使用双引号(“)。 其次,我总是将所有字段视为字符串,并在代码中调用适当的解析方法 我在CSV文件中执

我有一个数据驱动的单元测试,它使用CSV文件作为数据源。我的文件中的一列将被视为字符串。它工作正常,直到我添加一行,其中该列的值可以解释为日期。当我这样做时,前面几行的测试开始失败。在列中有一个“日期”似乎会使它将列中的所有值都视为日期。无法解析为日期的值将被赋予DBNull值。
有没有办法防止这种情况发生?也许通过指定我的数据源中的每一列应被视为什么类型?

根据您提供的信息,我建议尝试在值的周围使用双引号(“)。 其次,我总是将所有字段视为字符串,并在代码中调用适当的解析方法

我在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中进行单元测试的经验有限,所以请随意建议对此答案的改进

这个答案是基于我读取一些十进制值的问题。这是为了测试我目前正在实现的格式化程序