Подтвердить что ты не робот

Запуск тестов электронной почты Junit без электронных писем, фактически выходящих

Я хочу запустить модульные тесты (Junit) на некоторых классах моделей, которые обычно будут отправлять электронные письма, подтверждающие, что все произошло. Есть ли макет почтового сервера, который вы можете использовать с модульными тестами, которые позволят вам подтвердить, что ваш прогон попытался отправить электронное письмо без фактической отправки электронной почты?

Кажется, было бы неплохо иметь, просто не уверен, что я хочу написать свою собственную. Стек приложения для аспекта электронной почты - Velocity + Spring, поэтому было бы предпочтительнее, если на тестовом сервере можно указать простое изменение файла applicationContext.xml.

4b9b3361

Ответ 1

Альтернативный ответ: Dumbster - это поддельный SMTP-сервер, предназначенный для тестирования. Он написан на Java.

Ответ 2

Я думаю, что проект Mock JavaMail - это то, что вы хотите.

Ответ 3

Я бы посмотрел на GreenMail, который жив (по-видимому, Dumbster мертв) с множеством функциональных возможностей и хороших примеров.

http://www.icegreen.com/greenmail/

Ответ 4

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

Похоже, что другие предложили вам просто определить свой собственный интерфейс "mail session" и создать реализацию, которая использует Javamail. В ваших тестах вы просто вводите макет в режиме реального мира, вы вводите реализацию Javamail.

Как JMock, так и EasyMock будут поддерживать все утверждения, которые могут возникнуть в сообщении, которое вы отправляете, и завершение тестирования.

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

Ответ 5

Вы можете попробовать JavaMail Mock2 https://github.com/salyh/javamail-mock2

В основном это касается IMAP/POP3, но SMTP Mock также доступен. Его доступный в центральной части города.

Функции

  • Поддержка imap, imaps, pop3, pop3s, smtp, smtps
  • Поддерживается для POP3: отбрасывается в POP3Folder, Folder.getUID(Message msg)
  • Поддерживается IMAP: отбрасывается в IMAPFolder, отбрасывается в UIDFolder, Subfolders, -Folder.getMessagesByUID(...), удаляет/переименовывает папки, добавляет сообщения
  • Поддержка SMTP: Mock Transport.send()
  • Неподдерживается на данный момент: расширения IMAP, такие как IDLE, CONDSTORE,... и отбрасываются в POP3Message/IMAPMessage, хранят слушатели.

Ответ 7

Мое решение состояло в том, чтобы обернуть почтовый сервер в класс, который принимает все параметры конфигурации и имеет метод send(). В моих тестах я бы издевался над этим классом и переопределял send() тем, что сохраняет текущие параметры для assert.

Чтобы проверить, работает ли почтовая служба, отправьте себе почту локально. Попробуйте hMail, если вы находитесь в Windows.