Spring test学习记录
单元测试
使用 mock 对象(结合其他有价值的测试技术)来孤立地测试你的代码。单元测试通常运行得非常快,因为没有运行时的基础设施需要设置。
Mock 对象
Spring 包括一些专们用于 mock 的包
Environment
MockEnvironment 和 MockPropertySource 对于开发依赖环境特定属性的代码的容器外测试非常有用。
JNDI
可以用它来为测试套件或独立的应用程序建立一个简单的 JNDI 环境。
Servlet API
这些 mock 对象是针对 Spring 的 Web MVC 框架使用的,测试 Web 上下文、controller 和 filter 非常有用
Spring Web Reactive
在 WebFlux 应用程序中使用
集成测试(常用)
上下文管理和缓存
Spring TestContext 框架提供了 Spring ApplicationContext 实例和 WebApplicationContext 实例的一致加载,以及这些上下文的缓存。
事务管理
该框架为每个测试创建和回滚一个事务。
JDBC 测试
Spring TestContext 框架
Spring TestContext 框架(位于 org.springframework.test.context 包中)提供通用的、注解驱动的单元和集成测试支持,与使用的测试框架无关。
这里只介绍如何使用,如果需要实现自定义等其它扩展功能,请自行查阅官方文档
Context 管理
每个 TestContext 为它所负责的测试实例提供上下文管理和缓存支持。测试实例不会自动收到对配置的 ApplicationContext 的访问。如果一个测试类实现了 ApplicationContextAware 接口,对 ApplicationContext 的引用将提供给测试实例。那么会
自动提供对 ApplicationContext 的访问。
上下文缓存一旦 TestContext 框架为一个测试加载了 ApplicationContext(或 WebApplicationContext),该上下文就会被缓存,并在同一测试套件中声明相同的唯一上下文配置的所有后续测试中重复使用。
事务管理:@Transactional 来注解一个测试方法会使测试在一个事务中运行,默认情况下,在测试完成后会自动回滚。
默认情况下,测试事务将在测试完成后自动回滚;然而,事务提交和回滚行为可以通过 @Commit 和 @Rollback 注解来声明性地配置