Динамическое создание методов модульного тестирования во время выполнения в MSTest - PullRequest
9 голосов
/ 02 декабря 2009

Есть ли в MSTest эквивалент SuiteBuilder? пока не смог найти.

У меня есть куча xml-файлов, каждый из которых можно увидеть как сопоставленный с тестовым методом. Так как их сотни, и писать тесты для каждого из них вручную, не очень хорошая идея.

Таким образом, в nunit вы могли бы реализовать ISuiteBuilder и динамически запускать тестовые случаи и отображать их как многие другие методы тестирования.

Я ищу способ сделать то же самое в MSTest.

Я посмотрел на атрибут DataSource, но он обслуживает 1 xml-файл источника данных / csv для каждого метода тестирования, заставляя меня писать сотни методов тестирования. Я также хочу сохранить каждый xml-файл отдельно и не объединять их в один огромный файл, в этом случае он станет недоступным.

Кто-то пробовал это или есть предложения?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Не совсем то, что вы просили, но вы можете использовать pex для автоматизированных и параметризуемых тестов белого ящика. Таким образом, вам не нужно вручную делать все это. Pex поддерживает MSTest и NUnit. Сгенерированные тесты используют дополнительный файл, вам не нужны никакие XML-файлы.

Но я думаю, что вы не можете легко использовать свои существующие XML-файлы из NUnit и делиться ими с MSTest, используя pex - если это то, что вы хотели.

1 голос
/ 18 мая 2011

Я уже сделал это. Вот что вам нужно сделать:

Тест:

[TestMethod]
[DeploymentItem("MyTestData")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
                   "|DataDirectory|\\MyTestData.xml",
                   "Test",
                    DataAccessMethod.Sequential)]
public void MyTest()
{
    string file = TestContext.DataRow[0].ToString();
    string expectedResult = TestContext.DataRow[1].ToString();
        // TODO: Test something
}

MyTestData.xml:

<?xml version="1.0" encoding="utf-8" ?>
<Rows>
  <Test>
    <File>test1.xml</File>
    <Result>1</Result>
  </Test>
  <Test>
    <File>test2.xml</File>
    <Result>2</Result>
  </Test>
</Rows>

test1.xml и test2.xml должны существовать в каталоге MyTestData.

...