Теоретический сценарий:
Допустим, у вас есть Core-Modul со многими интерфейсами и некоторые общие реализации, использующие эти интерфейсы, но не наследующие от этих интерфейсов вместе с несколькими модулями, которые являютсянаследование от этих интерфейсов.
Примерно так:
Основной модуль
|- Интерфейс A
|- Интерфейс B
|- ...
|- Интерфейс Z
|- импл
|- GenericImplementationA
|- GenericImplementationB
ModuleA
|- SpecificImplementationOfInterfaceA
|- SpecificImplementationOfInterfaceB
|- ...
|- SpecificImplementationOfInterfaceZ
...
ModuleZ
|- OtherSpecificImplementationOfInterfaceA
|- OtherSpecificImplementationOfInterfaceB
|- ...
|- OtherSpecificImplementationOfInterfaceZ
Мой вопрос сейчас заключается в том, как лучше всего написать «общие» тесты, использующие интерфейсы, но выполняемые для каждого модуля с конкретной реализацией.Кроме того, я хочу написать тесты для этих общих классов в модуле ядра, но у меня нет реализации интерфейсов, которые используются в этих классах.
Некоторые возможные решения, о которых я подумал:
- (A) Написание общих тестов в основном модуле и создание для каждого модуля и каждой конкретной реализации тестового класса, который наследуется от общего теста и проходит определенную реализацию.
- (B) Создание нового тестового модуля, который наследуется от основного модуля и каждого конкретного модуля, запись там общих тестов и использование Параметризованных тестов junit
Недостатком решения A является то, что вам нужно так много избыточных классов, которые наследуются только от общего теста и проходят конкретную конкретную реализацию.
Есть ли примеры хорошей практики для этого случая?