java - 如何对遗留 J2EE 应用程序进行单元测试

标签 java unit-testing scala jakarta-ee

这听起来像是一个模糊的问题,但我正在寻找一些具体的指示。

我们的 J2EE 应用是基于 Struts2 + Plain Servlets + JSP + iBatis + Oracle 构建的

我更愿意用 Scala 编写单元测试,这样我也可以在业余时间学习这门语言

  • 我需要什么才能在执行某些特定步骤后验证特定列是否显示在 JSP 中
    • 点击一个链接。选择一些参数并将页面提交给servlet
    • 验证下一页在其 <table> 中是否有特定列标签。
  • 我需要什么来为 serlvet 创建模拟请求?

除了核心业务功能测试之外,我正在尝试编写上述测试,但问题是我正在尝试将遗留代码包装在单元测试中,而代码当然不是为单元测试而设计的。

最佳答案

我不会将此称为单元测试。当您尝试测试多个单元的集成时。此外,为 JSP 创建单元测试也相当困难,因为它具有许多只有在容器中时才可用的上下文依赖项。

相反,我建议编写一些针对正在运行(已部署)的应用程序执行的自动化功能测试。

类似 Selenium 的框架在这里可能会有很大的帮助,因为它们允许模拟真实的用户行为并对生成的 HTML 代码进行断言。

编辑:另一种方法可能是:

  • 启动一个嵌入式servlet 容器,如Jetty在你的测试代码中
  • 将所有普通的 servlet 和 JSP 部署到它
  • 用内存数据库替换 Oracle 数据库,如 HSQLDerby
  • 使用 DBUnit 用一些测试数据填充它
  • 然后再次使用 Selenium (具有 Java 绑定(bind))或 HttpUnit针对生成的 HTML 代码发出请求和断言。

但同样,它不是单元测试,而是集成测试。

关于java - 如何对遗留 J2EE 应用程序进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429322/

相关文章:

java - 如何根据重复出现的子字符串拆分字符串?

scala - 未能初始化编译器 : object java. lang.Object in compiler mirror not found

scala - json4s 序列化和反序列化泛型类型

Android Studio 简单单元测试不起作用

scala - 防止在 Scala 中导入未经授权的类

java - 多个实体 jar 与增量构建

java - MySQL 触发器或存储过程可以用 Java 编写吗?

java - Android 应用程序返回 NULL

android - UnitTest 中 MutableLiveData 的 setValue 和 postValue

ios - 使用 maxConcurrentOperationCount 对 NSOperationQueue 进行单元测试