Spring MVC是用于构建企业Java应用程序的最受欢迎的Java框架之一,非常适合测试。 通过设计,Spring MVC促进了关注点的分离并鼓励针对接口进行编码。 这些特性以及Spring对依赖项注入的实现,使Spring应用程序非常容易测试。
本教程是我使用JUnit 5进行单元测试的第二部分。 我将向您展示如何将JUnit 5与Spring集成,然后向您介绍可用于测试Spring MVC控制器,服务和存储库的三个工具。
将JUnit 5与Spring 5集成
对于本教程,我们将使用Maven和Spring Boot,因此我们要做的第一件事是将JUnit 5依赖项添加到我们的Maven POM文件中:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.6.0</version>
<scope>test</scope>
</dependency>
就像我们在第1部分中所做的一样,在此示例中,我们将使用Mockito。 因此,我们将需要添加JUnit 5 Mockito库:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>3.2.4</version>
<scope>test</scope>
</dependency>
@ExtendWith和SpringExtension类
JUnit 5定义了一个扩展接口 ,通过该接口 ,类可以在执行生命周期的各个阶段与JUnit测试集成。 我们可以通过在测试类中添加@ExtendWith
批注并指定要加载的扩展类来启用扩展。 然后,扩展可以实现各种回调接口,这些接口将在整个测试生命周期中被调用:在所有测试运行之前,在每个测试运行之前,在每个测试运行之后以及在所有测试运行之后。
Spring定义了一个SpringExtension
类,该类订阅JUnit 5生命周期通知以创建和维护“测试上下文”。 回想一下,Spring的应用程序上下文包含应用程序中的所有Spring Bean,并且它执行依赖项注入以将应用程序及其依赖项组合在一起。 Spring使用JUnit 5扩展模型来维护测试的应用程序上下文,这使得使用Spring编写单元测试变得简单。
在将JUnit 5库添加到Maven