首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模拟IMAP或POP服务器进行单元测试的最简单方法是什么?

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

Stack Overflow用户
提问于 2010-07-05 22:18:13
回答 4查看 17.3K关注 0票数 27

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

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

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

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

我想避免第一种选择,它看起来很简单,但我从类似的经验中猜测,在未来的道路上还有一条长长的尾巴等着我。只需考虑想要测试安全连接等。类似地,第二个选项似乎需要很多工作,但我还没有找到允许第三个选项的邮件服务器。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-05 22:37:44

Greenmail可能会很有用。

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

票数 43
EN

Stack Overflow用户

发布于 2010-07-05 22:24:22

编写一个测试,它依赖于现有的邮件服务器来检查您的代码是否可以访问它。这段代码应该做正确的设置(例如,它应该给自己发送一封邮件)。使用一些全局变量或System.property保护此测试,以便您可以在运行时启用/禁用它。

将用于访问服务器的代码移动到一个独立的类中。

在你的测试中覆盖这个类。在测试中,只需检查邮件文本是否正确。如果您收到访问服务器中断的bug报告,请启用"access the real server test“并检查。

票数 1
EN

Stack Overflow用户

发布于 2010-07-05 22:24:38

我建议在测试代码中嵌入一个纯Java IMAP/POP服务器。

为此,您有许多可能性,包括:

Dwarf mail server

  • Use

  • Use

  • 编写您自己的IMAP模拟使用Javamail JMock来模拟您的邮件服务器的各种接口(毕竟,它必须有一个接口,不是吗?)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3180192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档