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

Han*_*etz 25 java email testing

我想对从电子邮件收件箱中提取邮件的Java应用程序进行单元测试,就像这个人一样.目前,我对我们公司的真实邮件服务器上的真实邮箱运行单元测试,这很容易设置,但是有以下缺点:

  • 您必须在运行测试之前发送实际的电子邮件
  • 添加更多测试用例可能很困难,例如,因为您可能希望针对不同的安全策略进行测试
  • 测试取决于与邮件服务器的工作网络连接以及以对我没有意义的方式耦合开发和系统管理的现有邮件帐户.

我想火起来的IMAP服务器的本地端口,假货基于存储在测试类文件一起测试数据的收件箱上.我可以想到以下方法:

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

我想避免的第一个选项,它看起来有点简单,但我是从类似的经历,有工作的一个长尾巴进一步等待的道路猜测.试想想,以测试安全连接等.同样,第二个选择似乎想太多的工作,但我还没有找到一个邮件服务器,但将允许第三个.

如果重要,我在构建过程中使用Maven和TestNG.

Boz*_*zho 37

Greenmail可能很有用.

GreenMail是一个开源,直观且易于使用的电子邮件服务器测试套件,用于测试目的.支持SMTP,POP3,IMAP和SSL套接字支持.