применить тестовый набор для реализации интерфейса - PullRequest
1 голос
/ 14 сентября 2011

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

, чтобы уточнить, у меня есть настройки, как

  • TestSpam.java
  • TestEgg.java
  • TestBacon.java

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

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

Есть идеи, как заставить это работать?

1 Ответ

2 голосов
/ 14 сентября 2011

В этой ситуации я неоднократно устанавливал шаблон, подобный следующему:

  • Создайте абстрактный класс, который проверяет ожидаемую функциональность интерфейса.
    • Этот класс должен объявлять абстрактный фабричный метод, который возвращает экземпляр интерфейса.
    • Все ваши тесты должны использовать экземпляр, возвращенный фабричным методом.
  • Создайте один или несколько классов (по одному для каждой реализации), которые расширяют этот абстрактный класс.
    • Реализуйте фабричный метод, возвращая соответствующий конкретный класс.
    • Используйте этот конкретный тестовый класс для проверки функциональности, специфичной для реализации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...