Java 是否有任何可以模拟错误响应的测试SMTP服务器?

Java 是否有任何可以模拟错误响应的测试SMTP服务器?,java,unit-testing,smtp,Java,Unit Testing,Smtp,我有一组与Java、电子邮件相关的单元测试,目前正在使用Wiser作为测试SMTP服务器。它对于基本的电子邮件测试(发送电子邮件、检查以确保收到邮件等)非常有用,但我有一个逻辑,我想根据SMTP服务器返回的错误响应重试失败的电子邮件发送。有人知道有任何测试SMTP服务器支持操纵它们以规定的方式响应吗?最好是一个纯Java服务器,可以通过单元测试自己进行旋转,但是任何符合要求的独立服务器都可以工作。谢谢。自己滚吧。创建一个绑定到TCP端口(比如端口25)并侦听流量的Java类相当简单 有一次,我在

我有一组与Java、电子邮件相关的单元测试,目前正在使用Wiser作为测试SMTP服务器。它对于基本的电子邮件测试(发送电子邮件、检查以确保收到邮件等)非常有用,但我有一个逻辑,我想根据SMTP服务器返回的错误响应重试失败的电子邮件发送。有人知道有任何测试SMTP服务器支持操纵它们以规定的方式响应吗?最好是一个纯Java服务器,可以通过单元测试自己进行旋转,但是任何符合要求的独立服务器都可以工作。谢谢。

自己滚吧。创建一个绑定到TCP端口(比如端口25)并侦听流量的Java类相当简单

有一次,我在端口80上进行了一些C#单元测试,以模拟web服务


创建不同的函数,以您需要处理的各种方式响应,您就完成了。它不需要是真正的SMTP服务器,因为这是一个单元测试。如果您遇到了一个没有测试的条件,请添加更多的测试。

Kohsuke Kawaguchi为单元测试编写了一个JavaMail提供程序,我知道它支持一些错误条件模拟。您可以在此处查看:

误差模拟非常简单。他说,

邮箱可以标记为“错误” 在程序上,这会导致所有 发送/接收操作失败。 这可以用来测试错误 处理应用程序的行为


我目前没有使用真正的SMTP服务器。Wiser()和类似的库(Dumbster)在编写时考虑了单元测试。它们提供了一些有用的特性,比如接收消息计数,这使得测试邮件相关代码变得相当简单。当然,这些信息实际上从来不会传播到任何地方。毫无疑问,我可以获取Wiser的源代码并添加我正在寻找的功能,但我认为它们是足够常见的请求,可能已经存在一些东西。MockJavaMail没有提供的那些可以被其他mock对象模拟。