Я хочу unit test приложение Java, которое извлекает письма из почтового ящика электронной почты, как этого парня. В настоящее время я запускаю модульные тесты против реального почтового ящика на нашем почтовом сервере нашей компании, который был прост в настройке, но имеет следующие недостатки:
- Вы должны отправить фактические электронные письма перед тем, как запустить тест.
- Добавление дополнительных тестовых примеров может быть затруднено, например, потому что вы можете протестировать разные политики безопасности.
- Тест зависит от рабочего сетевого подключения к почтовому серверу и существующей почтовой учетной записи, которая сочетает развитие и системное администрирование таким образом, что для меня нет смысла.
Я хотел бы запустить IMAP-сервер на локальном порту, который подделывает почтовый ящик на основе тестовых данных, хранящихся в файлах вместе с тестовыми классами. Я могу думать о следующих подходах:
- Запустите сервер сокетов и выполните рудиментарное подмножество IMAP
- Используйте библиотеку более высокого уровня, созданную для создания почтовых серверов.
- Используйте существующую реализацию сервера электронной почты, которую я могу встроить в свои тесты.
Я бы хотел избежать первого варианта, это выглядит просто, но я полагаю, что из-за подобного опыта есть длинный хвост работы, ожидающий дальнейшего продвижения по дороге. Просто подумайте о необходимости тестирования безопасных подключений и т.д. Аналогичным образом второй вариант, похоже, очень много работает, но я еще не нашел почтовый сервер, который позволит использовать третий.
Если это имеет значение, я использую Maven и TestNG во время процесса сборки.