这听起来像是一个模糊的问题,但我正在寻找一些具体的指示。
我们的 J2EE 应用是基于 Struts2 + Plain Servlets + JSP + iBatis + Oracle
构建的
我更愿意用 Scala 编写单元测试,这样我也可以在业余时间学习这门语言
- 我需要什么才能在执行某些特定步骤后验证特定列是否显示在 JSP 中
- 点击一个链接。选择一些参数并将页面提交给servlet
- 验证下一页在其
<table>
中是否有特定列标签。
- 我需要什么来为 serlvet 创建模拟请求?
除了核心业务功能测试之外,我正在尝试编写上述测试,但问题是我正在尝试将遗留代码包装在单元测试中,而代码当然不是为单元测试而设计的。
最佳答案
我不会将此称为单元测试。当您尝试测试多个单元的集成时。此外,为 JSP 创建单元测试也相当困难,因为它具有许多只有在容器中时才可用的上下文依赖项。
相反,我建议编写一些针对正在运行(已部署)的应用程序执行的自动化功能测试。
类似 Selenium 的框架在这里可能会有很大的帮助,因为它们允许模拟真实的用户行为并对生成的 HTML 代码进行断言。
编辑:另一种方法可能是:
- 启动一个嵌入式servlet 容器,如Jetty在你的测试代码中
- 将所有普通的 servlet 和 JSP 部署到它
- 用内存数据库替换 Oracle 数据库,如 HSQL或 Derby
- 使用 DBUnit 用一些测试数据填充它
- 然后再次使用 Selenium (具有 Java 绑定(bind))或 HttpUnit针对生成的 HTML 代码发出请求和断言。
但同样,它不是单元测试,而是集成测试。
关于java - 如何对遗留 J2EE 应用程序进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429322/