3

我正在尝试使用 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 修改文件。如果我使用分号,则不会拆分数据行。

我不想修改系统属性。

4

1 回答 1

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(;)

重要此文件需要是不带字节顺序标记 (BOM) 的 ANSI 或 UTF-8。默认情况下,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)]
于 2015-02-04T14:49:00.170 回答