测试
本章涵盖了 Spring 对集成测试的支持以及单元测试的最佳实践。Spring 团队倡导测试驱动开发 (TDD)。Spring 团队发现,正确使用控制反转 (IoC) 确实使单元测试和集成测试变得更容易(因为类中存在 setter 方法和适当的构造函数使它们更容易在测试中连接,而无需设置服务定位器注册表和类似结构)。
章节摘要
📄️ Spring 测试简介
测试是企业软件开发不可或缺的一部分。本章重点讨论 IoC 原则对单元测试所带来的价值,以及 Spring 框架对集成测试支持的好处。(对企业中测试的全面处理超出了本参考手册的范围。)
📄️ 单元测试
依赖注入应该使你的代码比传统的 J2EE / Java EE 开发更少依赖于容器。构成你应用程序的 POJO 应该可以在 JUnit 或 TestNG 测试中进行测试,使用 new 操作符实例化对象,而不需要 Spring 或任何其他容器。你可以使用模拟对象(结合其他有价值的测试技术)来隔离测试你的代码。如果你遵循 Spring 的架构建议,最终生成的干净分层和组件化的代码库将更容易进行单元测试。例如,你可以通过存根或模拟 DAO 或存储库接口来测试服务层对象,而不需要在运行单元测试时访问持久数据。
📄️ 集成测试
能够在不需要部署到应用服务器或连接到其他企业基础设施的情况下进行一些集成测试是很重要的。这样可以让你测试以下内容:
📄️ JDBC 测试支持
org.springframework.test.jdbc 包含 JdbcTestUtils,这是一个 JDBC 相关的实用函数集合,旨在简化标准数据库测试场景。具体来说,JdbcTestUtils 提供以下静态实用方法。
🗃️ Spring TestContext 框架
14 个项目
📄️ WebTestClient
WebTestClient 是一个用于测试服务器应用程序的 HTTP 客户端。它封装了 Spring 的 WebClient,并使用它来执行请求,但提供了一个测试外观以验证响应。WebTestClient 可以用于执行端到端的 HTTP 测试。它还可以用于测试 Spring MVC 和 Spring WebFlux 应用程序,而无需通过模拟服务器请求和响应对象运行服务器。
🗃️ MockMvc
7 个项目
📄️ 测试客户端应用程序
您可以使用客户端测试来测试内部使用 RestTemplate 的代码。这个想法是声明预期的请求并提供“存根”响应,以便您可以专注于独立测试代码(即,不运行服务器)。以下示例展示了如何做到这一点:
🗃️ 附录
2 个项目