当前位置: 首页 > news >正文

spring boot单元测试

在pom文件中添加测试依赖

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
 </dependency>

复制粘贴自动创建的单元测试类

文件名改为HelloControllerTests

编写单元测试方法

@Autowired
private HelloController helloController;

@Test
public void testHello() {

    String hello = helloController.hello();
    System.out.println(hello);
    Assert.isTrue("hello Spring Boot".equals(helloController.hello()), "helloController.hello()的返回值必须等于hello Spring Boot");

}

使用MockMvc来做单元测试 

import org.junit.jupiter.api.Test;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;  
import org.springframework.test.web.servlet.MockMvc;

import cn.zptc.autoapp.demos.web.HelloController;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;  
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;  
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;  
  
@WebMvcTest(HelloController.class)  
public class HelloControllerTest2 {  
  
    @Autowired  
    private MockMvc mockMvc;  
  
    @Test  
    public void whenGetGreeting_thenCorrectResponse() throws Exception {  
        mockMvc.perform(get("/hello"))  
                .andExpect(status().isOk())  
                .andExpect(content().string("Hello, World!"));  
    }  
}

这些测试通常运行得很快,因为它们不依赖于整个Spring应用程序的上下文启动。

它们专注于测试Controller的逻辑,而不需要启动整个服务器或数据库连接

启动tomcat来做单元测试

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyControllerTest {

    @LocalServerPort
    private int port;

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void testSayHello() {
        String url = "http://localhost:" + port + "/hello";
        String response = restTemplate.getForObject(url, String.class);
        assertThat(response).isEqualTo("Hello, World!");
    }
}

执行测试方法

光标定位到方法名称上,右键--》Run As --》JUnit Test。

相关文章:

  • LeetCode刷题第7题【整数反转】---解题思路及源码注释
  • 网络基础 【UDP、TCP】
  • 什么是耐环境环形光源
  • 企业文件共享中的权限管理与安全风险防范
  • 蓝桥杯篇---实时时钟 DS1302
  • 传输层协议TCP (上)
  • 迅为RK3568开发板篇Openharmony配置HDF控制UART-什么是串口
  • zabbix 监控系统 配置钉钉告警
  • 浅聊MQ之Kafka与RabbitMQ简用
  • 基础篇07-空域滤波(中)--非线性平滑滤波
  • [ComfyUI]腾讯开源黑科技Sonic,插件更新,更加可控啦
  • vite让每个scss文件自动导入某段内容
  • Unity使用iTextSharp导出PDF-05页面事件
  • 工业物联网远程监控系统优化方案,基于巨控GRM553Y-CHE
  • 基于Dapr与Kubernetes的弹性事件驱动架构:构建跨云可观测的松散耦合系统
  • 【删除tomcat默认管理控制台】
  • 【赵渝强老师】Spark的容错机制:检查点
  • Android网络框架——OKHttp
  • Webpack相关优化总结
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-21- 操作鼠标拖拽 - 中篇(详细教程)
  • 潍坊网站建设服务跟/万能浏览器
  • 网站关于我们怎么做/优化关键词规则
  • 一般网站海报做一张多久/搜索引擎推广简称
  • 网站制作好了怎么上传/网页设计师
  • 高端大气的科技网站/长沙seo网站管理
  • 免费咨询身高问题/沈阳seo关键词