java - 需要一个 SMTP 测试服务器进行集成测试(selenium)

标签 java email selenium

我有以下场景:

正在使用 selenium 对应用程序进行功能测试。在界面上执行的一个操作会导致将电子邮件发送到特定地址,该地址可以手动设置为某个值。效果很好。现在,我希望我的 Selenium 测试能够检查该电子邮件。如何在不使用真实服务器的情况下实现这一点?我的意思是这必须是一个真正的服务器,但它必须监听本地主机并从 java 启动。我认为像 dumbstergreenmail 这样的工具不适合这里,是吗?根据我在文档中读到的内容,它们在运行的应用程序之外无法访问。

有这样的工具吗?

谢谢!

最佳答案

鉴于 SMTP 传送没有“服务质量”保证,应用程序的功能测试只需证明远程 MTA 接受了有效的 SMTP 消息,或者在最终重试后接受了有效的 SMTP 消息。一旦被 MTA 接受,应用程序就无法再控制多长时间或者是否可以将其交付到可由 MUA 获取或读取的商店。

也就是说,此测试最重要的部分是检查 MTA SMTP 响应。许多(但不是全部)5xx 响应可能被视为应用程序故障。同样,大多数 2xx 响应可能会成功。无论哪种方式都必须考虑 4xx 代码。不同的 MTA 响应消息的方式多种多样。更不用说某些代码是邮件传输聊天的一部分,应用程序可能需要稍后重试;从技术上讲,这并不是一个错误,除非在几个小时内进行了多次重试。

功能或发布测试可能更好地包括将测试消息发送到不止一种类型的 MTA,因为 SMTP 标准在 MTA 中以奇怪的方式实现,并且 SMTP 支持的应用程序可能必须采用这些 考虑到特性,而不是证明某些邮件确实已到达邮箱。

虽然您可以使用小型 SMTP 服务器将收到的电子邮件转储到文件中,您的测试框架将检查这些文件以确保其存在且“正确”,但问题在于这些消息到底如何呈现给测试的细节 - - 您最终不仅需要在应用程序和测试框架中实现 MTA 聊天,还需要一些 MUA 部分来根据某些标准验证消息。我不喜欢这个,因为无论如何你都不会真正测试这个应用程序。相反,您将测试 MTA 和测试支持代码!

关于java - 需要一个 SMTP 测试服务器进行集成测试(selenium),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448425/

相关文章:

java - 如何获取 Java 程序在运行时执行的字节码?

HTML 元素/标签的 Java 库

java - Jackson MRBean 不工作,无法构造实例

email - 快速结帐 (NVP) 中的即时付款通知订单说明空白

python - 无法从某些盒状容器中获取标题

python - 当使用 ChromeDriver 和 Selenium 设置最大属性时,无法使用 send_keys 将日期作为文本发送到日期选择器字段

java - 如何获取FileNet P8中的属性数据类型

c# - 是否可以重置 ServicePointManager?

email - 如何使用 PowerShell 将文件附加到电子邮件

python - selenium.common.exceptions : session deleted because of page crash from tab crashed