Динамически создавать тесты в NUnit
Используя Nunit, я хочу написать тестовое устройство, которое будет читать все имена файлов в определенном каталоге и создать тест для каждого файла.
Я мог бы легко написать один тестовый метод, который просматривает каталог и просто выполняет все тесты, но когда я запускаю NUnit, я хочу видеть каждый из тестов индивидуально.
Возможно ли это?
Ответы
Ответ 1
Я нашел способ, который соответствует моим целям
У вас есть один тестовый пример и пометьте его атрибутом TestCaseSource таким образом
[Test, TestCaseSource("GetTestCases")]
public void TestFile(string filename)
{
//do test
}
Затем напишите GetTestCases, чтобы прочитать все имена файлов в каталоге
private static string[] GetTestCases()
{
return GetAllFilesInCurrentDirectory();
}
Затем, когда я запускаю NUnit, я получаю список тестов, которые нужно запустить (перечисленные в TestFile).
Ответ 2
Попробуйте тестеры, управляемые данными Расширение NUnit.
Ответ 3
Если вы не собираетесь добавлять файлы в этот каталог с течением времени и иметь набор имен файлов для ввода в качестве входа в общий тест, попробуйте использовать RowTest NUnit extension (часть сообщения std distribution v2.4.7). Вы сможете увидеть каждый тестовый пример - комбинацию ввода отдельно в графическом интерфейсе, сгруппированном под одним node.
Если вы собираетесь добавлять файлы в этот каталог, я бы написал один NUnit TestCase, который перебирает список файлов, полученных во время выполнения, и вызывает общий метод тестирования с каждым пути к файлу. Используйте параметр сбора для сбора неудачных имен тестовых файлов - в конце вы утверждаете. Вы не сможете увидеть каждый тестовый пример по отдельности, но у вас будет удобный для чтения простой тестовый код.
Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles))
Ответ 4
Я знаю, что это немного неясно, но я использовал script в прошлом для создания кода для меня, который затем я могу выполнить как отдельные тестовые примеры.