Этот вопрос уже имеет ответ здесь:
Я хочу к модульному тесту JAVA-приложение, которое выбирает письма от входного почтового ящика, во многом как этот парень. В настоящее время я выполняю модульные тесты против реального почтового ящика на реальном mailserver нашей компании, который было легко настроить, но имеет следующие недостатки:
Я хотел бы включить сервер IMAP на локальном порте, который фальсифицирует ящик входящих сообщений на основе данных тестирования, сохраненных в файлах вместе с тестовыми классами. Я могу думать о следующих подходах:
Я хотел бы избежать первой опции, это вид простых взглядов, но я предполагаю на основе подобного опыта, что существует длинный хвост работы, ожидающей далее в будущем. Просто думайте о желании протестировать безопасные соединения и т.д. Точно так же вторая опция походит для много работы, но я еще не нашел почтовый сервер, который допускал бы третий.
Если это имеет значение, я использую Знатока и TestNG во время процесса сборки.
Зеленая почта может быть полезна.
GreenMail - это интуитивно понятный и простой в использовании набор тестов почтовых серверов с открытым исходным кодом для тестирования. Поддерживает SMTP, POP3, IMAP с поддержкой сокета SSL.
Напишите тест, который полагается на существующий почтовый сервер, чтобы проверить, что ваш код может получить к нему доступ. Этот код должен выполнить надлежащую настройку (т.е. отправить себе письмо). Защитите этот тест какой-нибудь глобальной переменной или System.property
, чтобы вы могли включать/выключать его во время выполнения.
Перенесите код для доступа к серверу в изолированный класс.
Переопределите этот класс в своих тестах. В тесте просто проверьте правильность текста письма. Если вы получите сообщение об ошибке, что доступ к серверу не работает, включите тест "access the real server test" и проверьте.
Я бы предложил встроить чистый Java IMAP/POP сервер в ваш тестовый код.
Для этого у вас есть множество возможностей, включая: