使用JWebUnit测试电子邮件联系表单而不发送电子邮件

时间:2013-08-22 00:17:28

标签: jsp java-ee servlets email-integration jwebunit

我有一个使用servlet和JSP页面构建的Java Web应用程序。我已经使用JWebUnit(http://jwebunit.sourceforge.net)编写了一些集成测试。

我有一个这样的测试方法:

@Test
public void testContact() {
beginAt("contact");
assertResponseCode(200);

assertFormPresent("form_contact");
assertElementPresent("page_contact_form_uitleg");
assertTextInElement("page_contact_form_uitleg", getMessage("pagina.contact.uitleg"));

assertFormElementPresent("form_naam");
assertFormElementPresent("form_email");
assertFormElementPresent("form_boodschap");

setTextField("form_email", "joel@craenhals.eu");
setTextField("form_wachtwoord", "Joel1234!");
}

但是,当我在测试方法中提交表单时,会发送电子邮件。有没有办法像Rails一样测试这个电子邮件功能?在Rails中,当您处于测试环境中时,应用程序不会发送真实的电子邮件。相反,它会将这些电子邮件添加到某种测试队列中,您可以在其中检查是否已发送电子邮件。

我可以在Java Web应用程序中使用类似的东西吗?

2 个答案:

答案 0 :(得分:0)

JSP / Servlet中没有任何内置可以让它自动发生; Rails是一个框架,而JSP / Servlets是低级的。但是你的应用程序可能有一些存储在文本文件或数据库中的特定于环境的属性;如果您创建一个类似suppressMailSend的布尔值,然后使用此布尔值来控制您的邮件发送代码是否实际发送邮件(如果没有,则可能将邮件记录到您的应用程序日志中),这样做。 (一个有用的事情也可以是有条件地将这些邮件发送给他们的预期收件人而不是自己 - 将“真正的”收件人地址附加到主题行,这样您就知道邮件将在生产中发送给谁 - 有帮助如果你想看看发送的邮件是什么样的。)

答案 1 :(得分:0)

Post Hoc是一个Java / JSP应用程序,其作用类似于SMTP服务器,将从您的应用程序接收电子邮件,并将其存储在一个列表中,其中包含一个允许您检查电子邮件的用户界面。它易于安装且开销非常低。免费提供开源。

Git hub:Git Hub Site

另请参阅博文:PostHoc: Testing Apps that Send Email