как выполнить модульное тестирование правила электронной почты - PullRequest
0 голосов
/ 12 ноября 2009

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

например. если электронное письмо отправлено с blah@email.com, перенаправьте его в folder1.

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

Ответы [ 3 ]

3 голосов
/ 12 ноября 2009

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

  • Загрузчик электронной почты
  • Анализатор электронной почты
  • Движок правил
  • Маршрутизатор электронной почты

По сути, вы будете тестировать каждый компонент по отдельности, выполняя тесты, которые реализуют каждый аспект (насколько это возможно) каждого компонента.

2 голосов
/ 12 ноября 2009

Точная форма ваших юнит-тестов будет зависеть от архитектуры вашей системы. Как правило, вы создадите набор фиктивных писем. Используйте поддельный объект электронной почты. Они не должны фактически существовать в базе данных. В любом случае, вы должны иметь электронные письма, представленные в виде классов.

Напишите свои юнит-тесты, чтобы они действовали на поддельных электронных письмах и утверждали, что правило действовало так, как вы ожидаете.

0 голосов
/ 12 ноября 2009

Я здесь пурист, но модульное тестирование должно проверять наименьшую единицу кода. Который обычно является классовым методом. Поэтому вы должны посмотреть на каждый публичный метод, который есть у вашего класса или классов, и написать тест, который проверяет только логику в этом методе. Это может означать макетирование других взаимодействующих классов или рефакторинг вашего кода для уменьшения зависимостей. Часто вы обнаружите, что у вас есть класс с множеством обязанностей, который должен быть разбит на несколько классов, что позволит писать модульные тесты для. Именно так модульное тестирование является оценочной деятельностью, а не проверочной. Это должно повысить качество вашего дизайна.

Вы также можете посмотреть на ориентированные на клиента тесты, чтобы проверить, как все это работает вместе.

...