11

我正在测试一个应用程序,该应用程序从邮箱中取出邮件,根据该邮件的内容执行一些操作,然后根据操作的结果发送响应邮件。

我正在寻找一种为此应用程序编写测试的方法。理想情况下,我希望这些测试能够启动他们自己的邮件服务器,将我的测试电子邮件推送到此邮件服务器上的一个文件夹,并让我的应用程序从我的测试开始的邮件服务器中抓取邮件。

将应用程序配置为使用邮件服务器并不困难,但我不知道在哪里可以找到用 Java 启动邮件服务器的编程方式。我看过 JAMES,但我无法弄清楚如何从我的测试中启动服务器。

所以问题是这样的:我可以在 Java 中使用什么邮件服务器,我可以完全在 Java 中配置和启动?

4

5 回答 5

14

GreenMail的使用也非常简单,它被设计为用于自动“单元”测试的邮件服务器。

从项目网页(现在可能还有其他一些具有发送/接收功能的工具):

GreenMail 是一个开源、直观且易于使用的电子邮件服务器测试套件,用于测试目的。支持带有 SSL 套接字支持的 SMTP、POP3、IMAP。GreenMail 还提供了 JBoss GreenMail 服务。GreenMail 是第一个也是唯一一个为从 Java 接收和检索电子邮件提供测试框架的库。

于 2011-02-02T22:47:29.007 回答
4

我之前在单元测试中使用过DumbsterSubEthaSmtp来测试发送电子邮件的代码。

我发现 Dumbster 更容易使用。

于 2010-05-06T17:43:03.200 回答
0

看看JES,似乎做你想做的事。

于 2010-05-06T16:09:53.007 回答
0

Dumbster:快速设置!但无法处理邮件附件。正文末尾只有字符串,必须单独解析。

所以现在我正在尝试另一个框架

于 2012-07-30T08:01:09.273 回答
0

Mock- JavaMail项目

我在为 Jenkins 开发插件时遇到了它,使用它一直是我的梦想!

只需将依赖项放入您的项目中,您就可以开始了(我会让Kohsuke 解释如何设置和使用它)。

如果您不耐烦,这里有一个如何使用它的简单示例:

例子:

// Setup test: add mail to inbox
Mailbox tmp = Mailbox.get("foo@bar.com");
tmp.add(/* your javax.mail.Message */)
assertEquals 1, tmp.size()

// Connect to the inmemory mailbox using "imap"
Session session = Session.getInstance(System.getProperties(), null);
Store store = session.getStore('imap');
store.connect("bar.com","foo","anything");

// Check the mail exists!
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
assertEquals 1, inbox.getMessageCount()
store.close();
于 2014-10-17T01:00:32.283 回答