Работа с почтовым сервером Java для тестирования
Я тестирую приложение, которое извлекает почту из почтового ящика, выполняет некоторые действия на основе содержимого этой почты, а затем отправляет ответное письмо в зависимости от результата действия.
Я ищу способ, чтобы написать тесты для этого приложения. В идеале я хотел бы, чтобы эти тесты вызывали свой собственный почтовый сервер, отправляли мои тестовые письма в папку на этом почтовом сервере и мое приложение очищало почту от почтового сервера, который мой тест начатый.
настройка приложения для использования почтового сервера не сложна, но я не знаю, где искать программный способ запуска почтового сервера на Java. Я посмотрел на Джеймса, но я не могу понять, как запустить сервер из моего теста.
Итак, вопрос в следующем: что я могу использовать для почтового сервера на Java, который я могу настроить и запустить полностью в Java?
5 ответов
существует также очень простой в использовании GreenMail, который был дизайнером в качестве почтового сервера для автоматической "блок" тесты.
с веб-страницы проектов (возможно, в настоящее время есть некоторые другие инструменты с функциями отправки/получения):
GreenMail является открытым исходным кодом, интуитивно понятным и простой в использовании набор тестов электронной почты серверы для тестирования. Поддержки SMTP, POP3, IMAP с SSL сокетом поддержка. GreenMail также предоставляет Гринмейл От JBoss Услуга. Гринмейл-это кулак и единственная библиотека, которая предлагает тестовая платформа для получения и получение писем с Java.
Я использовал как Dumbster и SubEthaSmtp в модульных тестах перед тестированием кода, который отправляет электронную почту.
Я обнаружил, что с Dumbster работать намного проще.
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();