Подтвердить что ты не робот

Динамически создавать тесты в NUnit

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

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

Возможно ли это?

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 3

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

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

Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles))

Ответ 4

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