为 Spring JSP Web 应用程序处理以下(集成/单元)测试场景的最佳方法是什么:
- 使用 JUnitRunner 运行
- 访问 Spring 上下文(@Inject beans into the test)
- 向轻量级 Web 服务器发送请求,该服务器从呈现整个 html(包括 JSP)的测试内部开始
- 自动回滚交易
- 没有浏览器(Selenium 已过时)
- 真正运行的 servlet 容器(没有 MockServlet)来测试 JSP(spring-text-mvc 已经过时)
目标:
- 使用 maven 构建周期运行
- 隔离测试 - 每个测试都可以将所有 beans 设置为所需状态
- 检查 JSP 页面的 html 输出
- 检查bean状态/数据库状态
有这方面的框架吗?我可以组合框架吗?也许我需要设置自己的服务器并启动它,然后对本地主机运行实际请求。但是我如何才能影响服务器的上下文并对其运行回滚?
感谢您的指点、链接和想法。
编辑
我刚刚读到有关使用嵌入式码头测试 spring 应用程序的信息。不确定这是否是正确的方法。我认为问题在于部署的应用程序和我的测试没有相同的上下文。将进一步调查,欢迎对此提出任何想法。
edit2
找到另一个听起来很有前途的项目:JWebUnit .将尝试这个并根据反馈进行更新。很想听听有关使用该框架解决与我类似的问题的任何经验。
最佳答案
我还没有使用过它,但这对于 Spring-MVC 测试来说非常有前途 - https://github.com/SpringSource/spring-test-mvc .它满足1(使用JUnitRunner运行)、2(访问Spring Context)、4(事务回滚支持)、5(无浏览器)。 3,无需启动轻量级 Web 服务器,它可以通过编程方式连接整个 Spring MVC 基础架构并端到端地对其进行测试。
关于spring - xUnit 测试端到端的 Spring Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049985/