我正在尝试使用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修改文件。 如果我使用分号,则不会拆分数据行。
我不想修改系统属性。
答案 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)]