Я пишу несколько модульных тестов, которые требуют запуска одного и того же теста, но с несколькими разными входами / ожидаемыми выходами. Для удобства тестовые данные хранятся в XML.
Это представляется возможным при указании данных с помощью атрибута DataRow для предоставления DisplayName. Я не могу найти способ сделать то же самое при указании данных с помощью DataSource. Я попытался добавить атрибут DisplayName в свой XML, он не фильтруется. Результат теста относится только к «Строке данных i», что на первый взгляд бесполезно.
В этом случае нецелесообразно предоставлять тестовые данные с помощью атрибута DataRow.
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
"TestCases.xml",
"TestCase",
DataAccessMethod.Sequential)]
public void TestMethod1()
{
// blah
}
[TestMethod]
[DataRow(null, DisplayName="Null input test case")]
public void TestMethod2(object input)
{
// blah
}
Результат первого случая:
- TestMethod1 Duration: -ms
- TestMethod1 (Data Row 0) Duration: -ms
Результат второго случая:
- TestMethod2 Duration: -ms
- Продолжительность теста нулевого ввода: -ms
Пример XML использовано:
<Rows>
<TestCase>
<In>input1</In>
<Out>output1</Out>
</TestCase>
<TestCase>
<In>input2</In>
<Out>output2</Out>
</TestCase>
</Rows>
Мне также не удалось вручную изменить текущее имя теста через TestContext.
Было бы идеально, если бы можно было сделать примерно так:
<Rows>
<TestCase DisplayName="My first case">
<In>input1</In>
<Out>output1</Out>
</TestCase>
<TestCase DisplayName="My second case">
<In>input2</In>
<Out>output2</Out>
</TestCase>
</Rows>