测试
Spring Boot 提供了许多工具和注解来帮助测试你的应用程序。测试支持由两个模块提供:spring-boot-test
包含核心项目,而 spring-boot-test-autoconfigure
支持测试的自动配置。
大多数开发者使用 spring-boot-starter-test
启动器,它导入了 Spring Boot 测试模块以及 JUnit Jupiter、AssertJ、Hamcrest 和其他一些有用的库。
如果你有使用 JUnit 4 的测试用例,可以使用 JUnit 5 的 vintage 引擎来运行它们。要使用 vintage 引擎,需要添加 junit-vintage-engine
的依赖,如下例所示:
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
hamcrest-core
已被排除,转而使用 spring-boot-starter-test
中包含的 org.hamcrest:hamcrest
。
章节摘要
📄️ 测试范围依赖
spring-boot-starter-test 启动器(在测试范围内)包含了以下提供的库:
📄️ 测试 Spring 应用程序
依赖注入的主要优势之一在于它应该使你的代码更易于进行单元测试。你可以通过使用 new 操作符来实例化对象,甚至不需要涉及 Spring。你也可以使用模拟对象(mock objects)来代替真实的依赖。
📄️ 测试 Spring Boot 应用程序
一个 Spring Boot 应用就是一个 Spring ApplicationContext,因此除了您通常对普通 Spring 上下文所做的操作之外,不需要做任何特别的事情来测试它。
📄️ Testcontainers
Testcontainers 库提供了一种管理运行在 Docker 容器中的服务的方式。它与 JUnit 集成,允许你编写一个测试类,在运行任何测试之前启动一个容器。Testcontainers 特别适用于编写与真实后端服务(如 MySQL、MongoDB、Cassandra 等)进行交互的集成测试。
📄️ 测试工具
在测试应用程序时通常很有用的一些测试实用类被打包为 spring-boot 的一部分。