Data Driven MS使用分号分隔符测试CSV

时间:2014-06-03 09:59:41

标签: visual-studio csv data-driven-tests

我正在尝试使用Visual Studio进行数据驱动测试。 我的问题是它默认使用昏迷分隔符。 当我使用法语环境时,csv的系统分隔符是分号。 有没有办法在数据源中指定分隔符?

这是我的测试:

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "Test.csv", "Test#csv", Microsoft.VisualStudio.TestTools.UnitTesting.DataAccessMethod.Sequential)]
[DeploymentItem(@"Test.csv")]
public void Test()
{
}

如果我使用昏迷分隔符,我无法在没有配置的情况下使用MS Excel修改文件。 如果我使用分号,则不会拆分数据行。

我不想修改系统属性。

1 个答案:

答案 0 :(得分:1)

可能有点晚了,但我仍然会回答,因为它可能有助于其他人。

在幕后,Microsoft.VisualStudio.TestTools.DataSource.CSV使用OleDb驱动程序。您描述的数据源等于

[DataSource("System.Data.OleDb", 
    "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.; Extended Properties=\"Text\"",
    "Test#csv",
     Microsoft.VisualStudio.TestTools.UnitTesting.DataAccessMethod.Sequential)]

一旦您知道这一点,就知道您也可以使用带有此内容的 schema.ini 文件来设置分隔符。

[Test.csv]
Format=Delimited(;)

[SomeOtherTableToShowYouOnlyHaveToCreateOneSchemaDotIni.csv]
Format=Delimited(;)

重要此文件必须是ANSI或UTF-8 ,不带字节顺序标记(BOM)。默认情况下,Visual Studio使用此标记创建文本文件。在Visual Studio中,"另存为"对话框包含将文件导出为US-ASCII的选项,这应该足够了。

您需要做的最后一件事是将ini包含在部署项目中:

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
    "Test.csv", 
    "Test#csv",
    DataAccessMethod.Sequential)]
[DeploymentItem(@"Test.csv")]
[DeploymentItem(@"schema.ini")]
public void Test()
{ ... }

顺便说一句:这不起作用:

[DataSource("System.Data.OleDb", 
    "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.; Extended Properties=\"Text;FMT=Delimited(;)\"",
    "Test#csv",
     Microsoft.VisualStudio.TestTools.UnitTesting.DataAccessMethod.Sequential)]