xUnit测试Spring Web应用程序的端到端

时间:2012-06-15 11:38:07

标签: spring testing web-applications junit

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

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

目标:

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

这是否有框架?我可以组合框架吗?也许我需要设置我自己的服务器并启动它然后针对localhost运行实际请求。但是那么我如何影响服务器的上下文并针对它运行回滚?

感谢指点,链接和想法。


修改

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


EDIT2

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

答案 2 :(得分:0)

自Jakarta Cactus退休以来,{_ 3}}是一个基于容器的测试框架,是最活跃的项目。检查他们最新的Spring扩展Arquillian。它支持许多容器。这是here

答案 3 :(得分:0)

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