0


【讲解下Spring Boot单元测试】

在这里插入图片描述

🌈个人主页: 程序员不想敲代码啊
🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家
👍点赞⭐评论⭐收藏
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

在这里插入图片描述

**

🌠Spring Boot单元测试

**

🌠Spring Boot

提供一个非常方便的方式来写单元测试,它利用了

Spring Test

中的功能,允许你很容易地测试Spring应用程序中的各个组件。

🌠首先,你需要为你的项目添加

Spring Boot Starter Test

依赖。对于Maven项目,你需要在

pom.xml

中添加以下依赖:

<dependencies><!-- 其它依赖... --><!-- Spring Boot Starter Test依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

🌠对于Gradle项目,你需要在

build.gradle

文件中添加以下依赖:

dependencies {
    // 其它依赖...

    // 测试依赖
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

🌠下面提供一个简单的单元测试示例,假设你有一个Spring Boot应用程序中的服务类,我们可以进行单元测试:

@ServicepublicclassCalculatorService{publicintadd(int a,int b){return a + b;}}

🌠对于上述的

CalculatorService

类,一个简单的单元测试会是这样的:

importstaticorg.assertj.core.api.Assertions.assertThat;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.boot.test.mock.mockito.MockBean;@SpringBootTestpublicclassCalculatorServiceTest{@AutowiredprivateCalculatorService calculatorService;@TestpublicvoidtestAdd(){// Arrange (准备阶段)int numberA =10;int numberB =20;// Act (行动阶段)int result = calculatorService.add(numberA, numberB);// Assert (断言阶段)assertThat(result).isEqualTo(30);}}

🌠在上述例子中,

@SpringBootTest

注解创建了一个应用程序上下文,这在进行集成测试时是有用的。但如果只是单纯的单元测试一个组件,并不需要完整的上下文,可以用

@ExtendWith(SpringExtension.class)

代替以提升测试速度。

🌠对于需要测试Spring MVC控制器的情况,你可以使用

MockMvc

来模拟HTTP请求和断言响应:

importstaticorg.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;importstaticorg.springframework.test.web.servlet.result.MockMvcResultMatchers.status;importstaticorg.springframework.test.web.servlet.result.MockMvcResultMatchers.content;importorg.junit.jupiter.api.BeforeEach;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.test.web.servlet.MockMvc;@SpringBootTest@AutoConfigureMockMvcpublicclassWebLayerTest{@AutowiredprivateMockMvc mockMvc;@TestpublicvoidshouldReturnDefaultMessage()throwsException{this.mockMvc.perform(get("/")).andExpect(status().isOk()).andExpect(content().string("Hello World"));}}

🌠在这个示例中,

@AutoConfigureMockMvc

@SpringBootTest

被用来注入一个

MockMvc

实例,然后我们使用这个实例来执行一个HTTP GET请求,并断言结果。这种测试方式更接近于真实的HTTP请求,但它依然运行在服务器未启动的情况下。

🌠最后,正确的单元测试不应该依赖Spring框架或是任何外部服务/数据库等,这些是集成测试的范畴。对于单元测试,你应该尽可能地模拟你的依赖,使得每个测试小而快,并只关注一个特定的组件。


本文转载自: https://blog.csdn.net/2301_81357485/article/details/138050165
版权归原作者 程序员不想敲代码啊 所有, 如有侵权,请联系我们删除。

“【讲解下Spring Boot单元测试】”的评论:

还没有评论