Как повторно использовать юнит-тесты для интеграционных тестов - PullRequest
2 голосов
/ 25 мая 2011

Мое приложение имеет пользовательский компонент сервера.

У нас есть несколько тестовых примеров JUnit для бизнес-логики с JMockit, позволяющей имитировать уровень БД.

Для интеграционного тестирования у нас есть много похожих условий для проверки. Единственное отличие состоит в том, что мне нужно сериализовать вещи и отправлять их в сокет, а не просто звонить.

Есть ли какой-нибудь (простой) способ обобщить тесты, чтобы я мог указать эти условия один раз для обоих тестов?

Ответы [ 3 ]

1 голос
/ 25 мая 2011
 > Is there any (simple) way to generalize the tests so that I can 
 > specify those conditions once for both tests?

Вы можете поместить тесты в базовый класс с помощью виртуального FactoryMethod, который создает вспомогательные объекты.

Ваш unittest и интеграционный тест наследуется от этого класса. Реализация FactoryMethod создает либо какой-то фиктивный, либо какой-то реальный объект.

0 голосов
/ 25 мая 2011

Ваши модульные и интеграционные тесты - это просто еще один кусок кода, который необходимо применить к стандартным концепциям, которые у вас есть для кода основного потока. Таким образом, такие вещи, как написание многократно используемого кода, использование шаблонов проектирования, кодирование для интерфейсов и, наконец, непрерывный рефакторинг, будут справедливы и для тестов.

Следующие SO темы имеют больше советов:

  1. Повторное использование кода в модульных тестах
  2. Модульный тест, интеграционный тест или проблема в дизайне?

Надеюсь, это поможет.

0 голосов
/ 25 мая 2011

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

Вы должны написать его на каком-то предметно-ориентированном языке, который может быть прочитан нетехническими участникамино также может быть проанализирован, например:

discount: 10% for: orders over $10
discount: 20% for: orders over $40
discount: 30% for: orders over $100
...