【问题标题】:xUnit test Spring web application end-to-endxUnit 端到端测试 Spring Web 应用程序
【发布时间】:2012-06-15 11:38:06
【问题描述】:

为 Spring JSP Web 应用程序处理以下(集成/单元)测试场景的最佳方法是什么:

  • 使用 JUnitRunner 运行
  • 访问 Spring 上下文(@Inject bean 到测试中)
  • 向一个轻量级 Web 服务器发送请求,该服务器从测试内部开始呈现整个 html,包括 JSP
  • 自动回滚事务
  • 没有浏览器(Selenium 已退出)
  • 真正运行的servlet容器(没有MockServlet)来测试JSP(spring-text-mvc已经出)

目标:

  • 使用 Maven 构建周期运行
  • 隔离测试 - 每个测试都可以将所有 bean 设置为所需状态
  • 检查 JSP 页面的 html 输出
  • 检查 bean 状态/数据库状态

有这个框架吗?我可以组合框架吗?也许我需要设置自己的服务器并启动它,然后对 localhost 运行实际请求。但是我怎样才能影响服务器的上下文并对其运行回滚呢?

感谢您的指点、链接和想法。


编辑

我刚刚阅读了有关使用嵌入式码头测试 Spring 应用程序的信息。不确定这是否是正确的方法。我认为问题在于部署的应用程序和我的测试没有相同的上下文。将进一步调查,欢迎对此提出任何想法。


edit2

找到另一个听起来很有希望的项目:JWebUnit。将尝试这一点并根据反馈进行更新。很想听听使用该框架解决与我类似的问题的任何经验。

【问题讨论】:

    标签: spring testing web-applications junit


    【解决方案1】:

    我还没有使用过它,但这对于 Spring-MVC 测试来说非常有希望 - https://github.com/SpringSource/spring-test-mvc 。它满足 1(使用 JUnitRunner 运行)、2(访问 Spring Context)、4(事务回滚支持)、5(无浏览器)。 3、不需要启动一个轻量级的webserver,它可以通过编程的方式挂接整个Spring MVC的基础设施,并进行端到端的测试。

    【讨论】:

    • 是的,我们从 spring-test-mvc 开始。但它没有 servlet 上下文,所以它不会呈现 JSP。我会更新我的帖子
    • 是的,它不会渲染 jsp,因为这是由容器完成的 - 这是我刚刚回答的另一个问题 - stackoverflow.com/a/11050856/204788,您只能验证final jsp 是你所期望的,而不是渲染的内容本身。
    • 呵呵,你回答了我最初的问题。这就是为什么我想对一台真实的服务器运行测试,但我可以直接从测试中影响它。
    【解决方案2】:

    【讨论】:

    • 感谢您的指点。我更新了我的帖子以清除.. 我们不能使用模拟 servlet,我们需要一个真正的 servlet,否则 JSP 页面不会被渲染。
    【解决方案3】:

    自从基于容器的测试框架 Jakarta Cactus 退役以来,Arquillian 是最活跃的项目。检查他们最新的 Spring 扩展 here。它支持许多容器。这是list

    【讨论】:

      【解决方案4】:

      我已在测试驱动设计的谷歌小组中更详细地发布了这个问题。对于任何努力测试自动化或测试他们的 Web 应用程序的人来说,这是一个非常有趣的讨论: Growing Object Oriented Software - Google Group

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        相关资源
        最近更新 更多