Spring boot 单元测试类

embedded/2024/10/18 18:27:18/

在Spring Boot中,我们可以使用Spring Boot Test框架来进行单元测试。这是一个非常强大的工具,可以帮助我们模拟Spring环境,进行各种测试,如集成测试、容器测试等。

以下是一些Spring Boot 单元测试的示例。

基本的Spring Boot测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleControllerTest {@Autowiredprivate WebApplicationContext context;private MockMvc mockMvc;@Beforepublic void setup() {this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build();}@Testpublic void testHello() throws Exception {mockMvc.perform(get("/hello")).andExpect(status().isOk()).andExpect(content().string(equalTo("Hello, World!")));}
}

在这个例子中,我们使用@SpringBootTest注解来启动完整的Spring上下文,并使用MockMvc来模拟Web请求。

使用@WebMvcTest进行Spring MVC测试

@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
public class SampleControllerWebMvcTest {@Autowiredprivate MockMvc mockMvc;@Testpublic void testHello() throws Exception {mockMvc.perform(get("/hello")).andExpect(status().isOk()).andExpect(content().string(equalTo("Hello, World!")));}
}

在这个例子中,我们使用@WebMvcTest注解来启动Spring MVC的上下文,并只扫描和加载SampleController.class相关的beans。

使用@DataJpaTest进行Spring Data JPA测试

@RunWith(SpringRunner.class)
@DataJpaTest
public class SampleRepositoryTest {@Autowiredprivate TestEntityManager entityManager;@Autowiredprivate SampleRepository repository;@Testpublic void testFindByName() {entityManager.persist(new SampleEntity("Sample Name"));Optional<SampleEntity> foundSampleEntity = repository.findByName("Sample Name");assertTrue(foundSampleEntity.isPresent());}
}

在这个例子中,我们使用@DataJpaTest注解来启动Spring Data JPA的上下文,并模拟JPA的操作。

使用@RestClientTest进行Rest客户端测试

@RunWith(SpringRunner.class)
@RestClientTest(SampleRestClient.class)
public class SampleRestClientTest {@Autowiredprivate SampleRestClient restClient;@Testpublic void testGetSampleData() {String response = "{\"name\":\"Sample Name\"}";MockRestServiceServer server = MockRestServiceServer.create(restClient);server.expect(requestTo("/sample/data")).andRespond(withSuccess(response, MediaType.APPLICATION_JSON));SampleData sampleData = restClient.getSampleData();assertEquals("Sample Name", sampleData.getName());server.verify();}
}

在这个例子中,我们使用@RestClientTest注解来模拟Rest客户端的行为,并模拟Rest服务的响应。


http://www.ppmy.cn/embedded/51051.html

相关文章

【扫雷游戏】C语言实现

机器学习&#xff1a;Transformer框架理论详解和代码实现>Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属…

探索Python元类的奥秘及其应用场景

Python内存优化与性能调优实战指南 一、引言 Python以其简洁易读、功能强大而著称&#xff0c;但在处理大规模数据或进行高性能计算时&#xff0c;内存使用和性能问题可能会成为瓶颈。本文将介绍一系列实用的内存优化和性能调优策略&#xff0c;帮助你在Python中更有效地利用…

Python抓取高考网图片

Python抓取高考网图片 一、项目介绍二、完整代码一、项目介绍 本次采集的目标是高考网(http://www.gaokao.com/gkpic/)的图片,实现图片自动下载。高考网主页如下图: 爬取的流程包括寻找数据接口,发送请求,解析图片链接,向图片链接发送请求获取数据,最后保存数据。 二…

【ARMv8/ARMv9 硬件加速系列 2.2 -- ARM NEON 的加减乘除(左移右移)运算】

文章目录 NEON 加减乘除 NEON 加减乘除 下面代码是使用ARMv8汇编语言对向量寄存器v0-v31执行加、减、乘以及左移和右移操作的示例。 ARMv8的SIMD指令集允许对向量寄存器中的多个数据进行并行操作。v0和v1加载数据&#xff0c;对它们进行加、减和乘,左移和右移操作。最后&#…

python20 函数的定及调用

函数的定及调用 函数是将一段实现功能的完整代码&#xff0c;使用函数名称进行封装&#xff0c;通过函数名称进行调用。以此达到一次编写&#xff0c;多次调用的目的 用 def 关键字来声明 函数 格式&#xff1a; def 函数名(参数列表):函数体[:return 返回值是可选的&#xff0…

【DevOps】Kibana:数据可视化与探索的强大工具

目录 1、Kibana的基本概念 1.1 Elasticsearch集成 1.2 可视化类型 1.3 仪表板 2、 Kibana的主要功能 2.1 数据探索 2.2 可视化分析 2.3 仪表板管理 2.4 日志分析 2.5 监控与警报 3、 Kibana的使用场景 3.1 应用性能监控&#xff08;APM&#xff09; 3.2 安全信…

C++面向对象程序设计 - 函数库

C语言程序中各种功能基本上都是由函数来实现的&#xff0c;在C语言的发展过程中建立了功能丰富的函数库&#xff0c;C从C语言继承了些函数功能。如果要用函数库中的函数&#xff0c;就必须在程序文件中包含文件中有关的头文件&#xff0c;在不同的头文件中&#xff0c;包含了不…

18V-180V降5V500mA恒压WT5118

18V-180V降5V500mA恒压WT5118 如何实现18V-180V宽电压输入下的恒压5V 500mA输出。输入电压是波动的18V还是高达180V,WT5118都能确保输出端提供稳定的5V电压和500mA的电流。 WT5118 是一款集成了 180V 高电压 MOSFET 的 DC-DC 控制器&#xff0c;专为开关电源设计。该设备具备内…