我有以下情况:
正在使用硒对应用程序进行功能测试。在界面上执行的一个操作导致向特定地址发送电子邮件,可以手动将其设置为某个值。它工作正常。现在,我希望我的硒测试检查该电子邮件。如何在不使用真实服务器的情况下实现这一目标?我的意思是这必须是一个真正的服务器,但它必须在localhost上侦听并从java开始。我不认为 dumbster 或 greenmail 等工具适合这里,是吗?根据我在文档中看到的内容,它们无法在正在运行的应用程序之外访问。
有这样的工具吗?
谢谢!
答案 0 :(得分:1)
鉴于没有"服务质量"保证SMTP传递,应用程序的功能测试只需要证明远程MTA接受有效的SMTP消息 - 或者在最终重试后接受。一旦被MTA接受,该应用程序就无法控制多长时间,甚至是否可以将其传送到可以由MUA获取或读取的商店。
也就是说,此测试中最重要的部分是检查MTA SMTP响应。许多(但不是全部)5xx响应可能被视为应用失败。同样,大多数2xx响应可能是成功的。必须考虑4xx代码。各种MTA可以以各种方式响应消息的方式多种多样。更不用说某些代码是应用程序可能必须稍后重试的邮件传输聊天的一部分;这在技术上不是错误,除非经过几个小时的重复次数。
功能或发布测试可能更好地包括将测试邮件发送到多种类型的MTA,因为SMTP标准是跨MTA以奇怪的方式实现的,而SMTP支持的应用程序可能必须采用这些 考虑到特性,而不是证明某些消息实际上是将其发送到邮箱。
虽然您可以使用小型SMTP服务器将收到的电子邮件转储到您的测试框架将检查以确保存在且"正确"的文件中。魔鬼将详细了解这些消息是如何呈现给测试的 - 你最终不仅要在应用程序和测试框架中实现MTA聊天,而且还需要一些MUA部分来验证基于某些消息的消息标准。我不是这个的粉丝,因为你无论如何都不会真正测试应用程序。相反,您正在测试MTA和测试支持代码!