【问题标题】:Testing email contact form with JWebUnit without sending the email在不发送电子邮件的情况下使用 JWebUnit 测试电子邮件联系表
【发布时间】:2013-08-22 00:17:28
【问题描述】:

我有一个使用 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 应用程序中使用类似的东西吗?

【问题讨论】:

    标签: jsp jakarta-ee servlets email jwebunit


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      Git 中心:Git Hub Site

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-06
        • 2014-11-04
        • 2016-07-04
        • 2018-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多