Меня интересует возможность создания нескольких тестовых фиксаций с аргументами конструктора, передаваемыми ему во время выполнения статическим методом или свойством, возвращающим IEnumerable.
В Nunit 2.5 они представили параметризованные тесты и тестовые фиксации.Это позволяет вам написать один тест и запустить его с несколькими входными данными, предоставленными с использованием атрибута TestCase, а также написать один тестовый класс и создать его несколько экземпляров с разными аргументами конструктора соответственно.
В дополнение к этому, онМожно создать несколько тестовых случаев на основе вывода свойства или метода, используя атрибут TestCaseSource.Это будет использовать выходные данные метода / свойства, которое реализует IEnumerable, чтобы создать набор тестовых случаев, по одному на объект в списке.Это то, что я хотел бы сделать, но на уровне прибора, а не на уровне теста.
Некоторые сведения о моем примере использования:
Я тестирую симуляциюпрограммное обеспечение и «среда моделирования», которая должна быть загружена (из сериализованного объекта), прежде чем можно будет запустить любое моделирование.Существует около 5 различных типов симов, поэтому в моем тестовом классе есть 5 методов тестирования (по одному для каждого типа сима).В настоящее время я использую наследование (вместо параметризованных приборов) для запуска тестовых случаев в нескольких (полдюжине или около того) средах моделирования, которые были взяты из производственных данных.
Моя проблема проистекает из того факта, чтоВ недавней попытке увеличить покрытие кода мы автоматически сгенерировали все возможные комбинации компонентов симуляции, что привело к созданию более 100 сим-сред.Я не хочу создавать унаследованные классы для каждого из них, поэтому вместо этого я использую TestCaseSource со свойством, которое возвращает все рабочие пространства в папке, и изменяю тесты, чтобы они (повторно) загружали среду sim в самом тесте длякаждый тестовый пример.
В идеале я хотел бы иметь один прибор для каждой среды моделирования и определить, сколько / сколько это во время выполнения.Я знаю, что могу сделать первое путем жесткого кодирования путей среды сима в 100+ атрибутов TestFixture, могу ли я сделать последнее?