0

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

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

目标:

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

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

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


编辑

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


编辑2

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

4

4 回答 4

1

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

于 2012-06-15T12:24:11.063 回答
0

这篇博文可能是一个好的开始http://www.scarba05.co.uk/blog/2010/07/more-on-integration-testing-of-spring%E2%80%99s-mvc-annotation-mappings-用于控制器/

于 2012-06-15T12:01:31.313 回答
0

自从作为基于容器的测试框架 Jakarta Cactus 退役以来,Arquillian是最活跃的项目。在这里查看他们最新的 Spring 扩展。它支持许多容器。这是清单

于 2012-06-16T08:39:41.720 回答
0

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

于 2012-06-19T20:52:47.283 回答