Outlook收件人测试:始终成功/始终反弹

时间:2011-05-25 16:07:14

标签: unit-testing email junit outlook mocking

我正在编写JUnit测试,并希望有一个Outlook电子邮件收件人,这个收件人将永远成功,而另一个收件人总是会因为无法投放而反弹。

对于“总是成功”,我认为相当于NUL:的SMTP会有所帮助。

(我不想使用我的真实电子邮件地址有两个原因:1)我不希望每次有人运行测试床时都会收到测试电子邮件2)我不想让回归测试开始失败如果我的雇主决定取消我的职位和电子邮件地址。)

对于“永远反弹”,我想我可以使用im.a.nut@mycompany.com,但是如果Nut先生加入MyCompany,那么对于一种更可靠的技术是开放的。

除了“总是反弹”之外,我还要感谢有关如何以及在何处查找“系统无法传送”消息的任何想法。我应该使用测试电子邮件帐户吗?或者也许是模拟弹跳消息的模拟框架?


编辑:根据http://www.oracle.com/technetwork/java/faq-135477.html#bounce,退回邮件已标准化但未广泛实施。电子邮件地址验证独立于JavaMail。这是我如何回答最后一段中的问题。测试电子邮件帐户可能需要一些时间才能收到消息,我不想阻止无法保证交付的消息。嘲弄可能更有意义。

1 个答案:

答案 0 :(得分:2)

使用模拟来验证响应的处理逻辑绝对是可行的方法。隔离测试只能让你到目前为止 - 最终你需要编写某种形式的集成测试,在网络上与邮件服务器通信,以验证你为单元测试做出的假设。

过去,我让IT部门启动了一台只有内部开发邮件服务器的虚拟机。此邮件服务器不直接连接到Internet,但如果需要,则通过公司邮件服务器路由。

拥有自己的域控制器/邮件服务器可让您(开发人员)更好地控制通常不允许通过公司网络访问的功能。

关于处理不同类型的回复,我有一个项目,我们需要为会议邀请测试不同类型的回复。我们为不同的电子邮件地址配置了服务器端规则,以便某些精心设计的主题或正文会自动响应接受,拒绝等。服务器端规则很容易设置 - 只需登录该用户(这是假域控制器派上用场)打开Outlook并配置规则。可以将更复杂的规则配置为Exchange "Event Sink"的一部分。

仍然如前所述,您应该努力将响应处理与发送操作分开。通过这种方式,您可以在不增加环境开销的情况下测试处理过程。