【问题标题】:How do I control the type of a column in data-driven unit test with CSV datasource?如何使用 CSV 数据源控制数据驱动单元测试中的列类型?
【发布时间】:2011-03-14 17:38:10
【问题描述】:

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

【问题讨论】:

    标签: .net unit-testing csv data-driven


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多