Работа с почтовым сервером Java для тестирования

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

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

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

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

5 ответов


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

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

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


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

Я обнаружил, что с Dumbster работать намного проще.


посмотри JES, Кажется, делать то, что вы хотите.


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

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


на Макет-Javamail Будет проект

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

просто падение зависимость на ваш проект, и вы готовы пойти (я дам Kohsuke объяснить как его настроить и использовать).

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

пример:

// 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();