DataDriven MSTests CSV с разделителем точкой с запятой

Я пытаюсь сделать тест на основе данных с помощью 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 без настройки. Если я использую точку с запятой, строка данных не разбивается.

Я не хочу изменять свойства системы.


person boblemar    schedule 03.06.2014    source источник


Ответы (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)]
person realbart    schedule 04.02.2015