У меня есть несколько тестов NUnit, которые используют функцию TestCaseSource.К сожалению, нужная мне функция TestCaseSource требует много времени для инициализации, потому что она рекурсивно сканирует дерево папок, чтобы найти все тестовые изображения, которые будут переданы в тестовую функцию.(В качестве альтернативы он может загружаться из XML-файла списка файлов при каждом запуске, но автоматическое обнаружение новых файлов изображений по-прежнему является обязательным.)
Можно ли указать атрибут NUnit вместе с TestCaseSource так, чтобы NUnit не выполнялперечислять контрольные примеры (не вызывает функцию TestCaseSource) до тех пор, пока пользователь не нажмет на узле или пока не будет запущен набор тестов?
Необходимость получить все тестовые изображения, хранящиеся в папке, является проектомтребование, потому что другие люди, которые не имеют доступа к тестовому проекту, должны будут добавить новые тестовые изображения в папку, без необходимости изменять исходный код тестового проекта.После этого они смогут просмотреть результаты теста.
Некоторые догматические юнит-тестеры могут возразить, что я использую NUnit, чтобы делать то, что он не должен делать.Я должен признать, что должен соответствовать требованию, и NUnit - это отличный инструмент с отличным графическим интерфейсом, который удовлетворяет большинству моих требований, так что мне все равно, является ли это правильным модульным тестированием или нет.
Дополнительная информация (из документации NUnit)
Примечание по построению объекта
NUnit находит тестовые наборы во время загрузки тестов, создает экземплярыкаждый класс с нестатическими источниками и создает список тестов для выполнения.Каждый исходный объект создается только один раз в это время и уничтожается после загрузки всех тестов.
Если источник данных находится в самом тестовом приспособлении, объект создается с использованием соответствующего конструктора для параметров фиксатора, предоставленных ватрибут TestFixtureAttribute или конструктор по умолчанию, если параметры не были указаны.Поскольку этот объект уничтожается до запуска тестов, связь между этими двумя фазами - или между различными запусками - невозможна, кроме как через сами параметры.
Кажется, цель загрузки тестовых случаев вверхфронт заключается в том, чтобы избежать связи (или побочных эффектов) между TestCaseSource и выполнением тестов.Это правда?Является ли это единственной причиной, по которой требуется загружать тестовые примеры впереди?
Примечание:
Требовалась модификация NUnit, как описано в http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.html
Планируется ввести эту опцию в более поздних версиях NUnit.