Как проверить поведение реализаций интерфейсных методов в (абстрактных) классах без необходимости копировать тесты в каждый класс?
У меня есть (абстрактные) классы, которые реализуют несколькоинтерфейсы.Я знаю, как должен работать каждый интерфейс, и я определяю это в методах тестирования, чтобы мне не пришлось вручную повторять эти тесты для каждой реализации интерфейса.
Я мог бы создать для каждого интерфейса рефераткласс с тестами, и имеют абстрактный метод CreateSUT()
, который создает новый экземпляр конкретного класса.Но тогда я должен был бы создать новый класс с той же реализацией CreateSUT()
для каждого интерфейса, который реализует класс, поскольку C # не поддерживает множественное наследование.Есть ли лучший способ сделать это?
Также обратите внимание, что я также хочу протестировать интерфейсы, реализованные в абстрактных классах, которые имеют несколько неабстрактных подклассов, что немного усложняет ситуацию.
Этот вопрос не о том, должен ли я выполнять модульное тестирование моих реализаций интерфейса.Мнения расходятся, и я решил сделать это, потому что я знаю, как должны вести себя реализации интерфейса (никогда не возвращать нулевое значение, возвращать коллекцию только для чтения и т. Д.), И объединение этих тестов значительно упрощает мне тестирование.их реализации, сколько бы их ни было.