Java 需要SMTP测试服务器进行集成测试(selenium)

Java 需要SMTP测试服务器进行集成测试(selenium),java,email,selenium,Java,Email,Selenium,我有以下场景: 正在使用selenium对应用程序进行功能测试。在界面上执行的一个操作将导致向特定地址发送电子邮件,该地址可以手动设置为某个值。它很好用。现在,我想让我的selenium测试来检查电子邮件。如何实现这一点而不必使用真正的服务器?我的意思是,这必须是一个真正的服务器,但它必须在本地主机上侦听,并从java开始。我不认为像dumbster或greenmail这样的工具适合这里,是吗?从我在文档中读到的内容来看,它们在运行的应用程序之外是不可访问的 有这样的工具吗 谢谢 鉴于SMTP传

我有以下场景:

正在使用selenium对应用程序进行功能测试。在界面上执行的一个操作将导致向特定地址发送电子邮件,该地址可以手动设置为某个值。它很好用。现在,我想让我的selenium测试来检查电子邮件。如何实现这一点而不必使用真正的服务器?我的意思是,这必须是一个真正的服务器,但它必须在本地主机上侦听,并从java开始。我不认为像dumbster或greenmail这样的工具适合这里,是吗?从我在文档中读到的内容来看,它们在运行的应用程序之外是不可访问的

有这样的工具吗

谢谢

鉴于SMTP传递没有“服务质量”保证,应用程序的功能测试只需要证明远程MTA接受了有效的SMTP邮件,或者在最终重试后接受了有效的SMTP邮件。一旦被MTA接受,该应用程序就无法再控制它将或是否会被送到商店,在那里MUA可以获取或读取它

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

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


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

因为这只是出于测试目的,所以在测试期间设置一个库,将电子邮件存储在数据库中,并在开发过程中实际发送电子邮件。我需要为此设置一个特殊的数据库吗?没有真正的轻量级smtp服务器,我可以在本地托管它来拦截应用程序从测试范围发送的消息?