Динамически создавать тесты в NUnit - PullRequest
34 голосов
/ 15 мая 2009

Используя Nunit, я хочу написать тестовое устройство, которое будет читать все имена файлов в определенном каталоге и создавать тест для каждого файла.

Я мог бы довольно легко написать один метод тестирования, который просматривает каталог и просто выполняет все тесты, но когда я запускаю NUnit, я хочу видеть каждый тест по отдельности.

Возможно ли это вообще?

Ответы [ 4 ]

55 голосов
/ 18 мая 2009

Я нашел способ, который подходит моим целям

Имейте один тестовый пример и пометьте его атрибутом TestCaseSource, например, так:

[Test, TestCaseSource("GetTestCases")]
public void TestFile(string filename)
{
    //do test
}

Затем напишите GetTestCases, чтобы прочитать все имена файлов в каталоге

private static string[] GetTestCases()
{
    return GetAllFilesInCurrentDirectory();
}

Затем, когда я запускаю NUnit, я получаю список тестов, которые нужно запустить (перечисленных в TestFile).

4 голосов
/ 15 мая 2009
1 голос
/ 15 мая 2009

Если вы не собираетесь со временем добавлять файлы в этот каталог и иметь набор имен файлов для передачи в качестве входных данных в общий тест, попробуйте использовать расширение RowTest NUnit (часть стандартного поста дистрибутива v2.4.7) - вы сможете увидеть каждый тестовый пример - комбинацию ввода индивидуально в графическом интерфейсе, сгруппированном под одним узлом.

Если вы собираетесь добавлять файлы в этот каталог, я бы написал один NUnit TestCase, который перебирает список файлов, полученных во время выполнения, и вызывает метод общего теста для каждого пути к файлу. Используйте параметр сбора для сбора ошибочных имен тестовых файлов - в конце вы утверждаете. Вы не сможете увидеть каждый тестовый пример в отдельности, но у вас будет читаемый простой тестовый код.

Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles))
0 голосов
/ 18 мая 2009

Я знаю, что это немного неясно, но в прошлом я использовал скрипт для генерации для меня кода, который затем мог бы выполнять как отдельные тестовые примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...