模拟 IMAP 或 POP 服务器进行单元测试的最简单方法是什么?
我想对一个从电子邮件收件箱获取邮件的Java应用程序进行单元测试,就像这个家伙一样。目前,我对我们公司的真实邮件服务器上的真实邮箱运行单元测试,该邮箱易于设置,但具有以下缺点:
- 在运行测试之前,您必须发送实际的电子邮件
- 添加更多测试用例可能很困难,例如,因为您可能希望针对不同的安全策略进行测试
- 该测试依赖于与邮件服务器的工作网络连接和现有的邮件帐户,该帐户以一种对我来说毫无意义的方式将开发和系统管理结合起来。
我想在本地端口上启动IMAP服务器,该服务器根据与测试类一起存储在文件中的测试数据伪造收件箱。我可以想到以下方法:
- 运行套接字服务器并实现基本的 IMAP 子集
- 使用用于构建电子邮件服务器的更高级别库
- 使用可以嵌入到测试中的现有电子邮件服务器实现
我想避免第一种选择,它看起来有点简单,但我从类似的经验中猜测,还有很长的工作要做。想想想要测试安全连接等。同样,第二个选项似乎有很多工作,但我还没有找到一个邮件服务器可以允许第三个选项。
如果这很重要,我在构建过程中使用Maven和TestNG。