一尘不染

模拟IMAP或POP服务器进行单元测试的最简单方法是什么?[重复]

java

我想对一个Java应用程序进行单元测试,该Java应用程序从电子邮件收件箱中提取邮件,当前,我在易于设置的公司真实邮件服务器上的真实邮箱上运行单元测试,但有以下缺点:

  • 在运行测试之前,您必须发送实际的电子邮件
  • 添加更多的测试案例可能很困难,例如,因为您可能想针对不同的安全策略进行测试
  • 测试取决于与邮件服务器的有效网络连接以及现有的邮件帐户,该帐户将开发和系统管理结合在一起对我而言毫无意义。

我想在本地端口上启动IMAP服务器,该服务器根据与测试类一起存储在文件中的测试数据来伪造收件箱。我可以想到以下方法:

  • 运行套接字服务器并实现基本的IMAP子集
  • 使用用于构建电子邮件服务器的更高级别的库
  • 使用可以嵌入测试中的现有电子邮件服务器实施

我想避免使用第一种方法,它看起来很简单,但是从类似的经验中我猜想,还有很长的路要走。只需考虑要测试安全连接等即可。类似地,第二个选项似乎需要很多工作,但是我还没有找到可以用于第三个选项的邮件服务器。

如果重要的话,我会在构建过程中使用Maven和TestNG。


阅读 379

收藏
2020-12-03

共1个答案

一尘不染

Greenmail可能有用。

GreenMail是用于测试目的的电子邮件服务器的开放源代码,直观且易于使用的测试套件。通过SSL套接字支持支持SMTP,POP3,IMAP。

2020-12-03