我想对一个从电子邮件收件箱获取邮件的Java应用程序进行单元测试,就像this guy一样。目前,我在我们公司的真实邮件服务器上对一个真实邮箱运行单元测试,该邮箱很容易设置,但有以下缺点:
我想在本地端口上启动一个IMAP服务器,它根据存储在测试类旁边的文件中的测试数据来伪造收件箱。我可以想到以下几种方法:
我想避免第一种选择,它看起来很简单,但我从类似的经验中猜测,在未来的道路上还有一条长长的尾巴等着我。只需考虑想要测试安全连接等。类似地,第二个选项似乎需要很多工作,但我还没有找到允许第三个选项的邮件服务器。
如果重要的话,我在构建过程中使用了Maven和TestNG。
发布于 2010-07-05 22:37:44
Greenmail可能会很有用。
GreenMail是一个开源、直观且易于使用的电子邮件服务器测试套件,用于测试目的。支持SMTP,POP3,IMAP与SSL套接字支持。
发布于 2010-07-05 22:24:22
编写一个测试,它依赖于现有的邮件服务器来检查您的代码是否可以访问它。这段代码应该做正确的设置(例如,它应该给自己发送一封邮件)。使用一些全局变量或System.property
保护此测试,以便您可以在运行时启用/禁用它。
将用于访问服务器的代码移动到一个独立的类中。
在你的测试中覆盖这个类。在测试中,只需检查邮件文本是否正确。如果您收到访问服务器中断的bug报告,请启用"access the real server test“并检查。
发布于 2010-07-05 22:24:38
我建议在测试代码中嵌入一个纯Java IMAP/POP服务器。
为此,您有许多可能性,包括:
https://stackoverflow.com/questions/3180192
复制相似问题