Работа с почтовым сервером Java для тестирования - PullRequest
8 голосов
/ 06 мая 2010

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

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

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

Итак, вопрос в следующем: что я могу использовать для почтового сервера в Java, который я могу настроить и запустить полностью в Java?

Ответы [ 5 ]

12 голосов
/ 03 февраля 2011

Существует также очень простая в использовании GreenMail , которая была разработана в качестве почтового сервера для автоматических "модульных" тестов.

С веб-страницы проектов (вероятно, есть некоторые другие инструменты с функциями отправки / получения в настоящее время):

GreenMail является открытым исходным кодом, интуитивно понятным и простой в использовании тестовый набор электронной почты серверы для тестирования. опоры SMTP, POP3, IMAP с сокетом SSL служба поддержки. GreenMail также предоставляет JBoss GreenMail Service. GreenMail это первая и единственная библиотека, которая предлагает тестовая структура для получения обоих и получение писем с Java.

4 голосов
/ 06 мая 2010

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

Мне показалось, что с Dumbster работать намного проще.

0 голосов
/ 17 октября 2014

Mock-JavaMail проект

Я сталкивался с этим при разработке плагина для Jenkins, и это была мечта использовать!

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

Если вы нетерпеливы, вот краткий пример того, как это используется:

Пример:

// Setup test: add mail to inbox
Mailbox tmp = Mailbox.get("foo@bar.com");
tmp.add(/* your javax.mail.Message */)
assertEquals 1, tmp.size()

// Connect to the inmemory mailbox using "imap"
Session session = Session.getInstance(System.getProperties(), null);
Store store = session.getStore('imap');
store.connect("bar.com","foo","anything");

// Check the mail exists!
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
assertEquals 1, inbox.getMessageCount()
store.close();
0 голосов
/ 30 июля 2012

Dumbster: Быстрая настройка! Но не может обрабатывать почтовые вложения. Там только строки в конце тела и должны быть проанализированы отдельно.

Так что теперь я пробую другой фреймворк

0 голосов
/ 06 мая 2010

Взгляните на JES , кажется, делает то, что вы хотите.

...