Springboot快速上手- 第七篇 单元测试

痴心易碎 提交于 2020-08-08 17:59:59

1 概述

SpringBoot对测试提供了一些简化支持,只需要添加起步依赖即可使用:

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

2 以前的测试方式

SpringJUnit支持,由此引入Spring-Test框架支持,通过这个注解让SpringJUnit4ClassRunner这个类提供Spring测试上下文 @RunWith(SpringJUnit4ClassRunner.class) 指定SpringBoot工程的Application启动类,通过这个注解加载和配置Spring应用上下文 @SpringApplicationConfiguration(classes = App.class) 由于是Web项目,Junit需要模拟ServletContext,因此需要给测试类加上@WebAppConfiguration @WebAppConfiguration

3 常见的第一种方式

image.png

@RunWith(SpringRunner.class) @SpringBootTest(classes = App.class) @AutoConfigureMockMvc 这种方式下:直接 @Autowired private MockMvc mockMvc; 然后就可以使用mockMvc 1:@RunWith里面,不再是SpringJUnit4ClassRunner.class,而是springboot专门做的一个启动类SpringRunner.class,当然,也可以使用@RunWith(SpringJUnit4ClassRunner.class) 2:也不使用@SpringApplicationConfiguration了,使用@SpringBootTest来指定启动类,启动类上面就有配置的注解 3:还可以指定随机的端口 @SpringBootTest(classes = App.class,webEnvironment = WebEnvironment.RANDOM_PORT) 4:可以引入自定义的配置类 @Import(MyTestsConfiguration.class) image.png

4 常见的第二种方式

1:如果没有 @AutoConfigureMockMvc, 那么就需要 @Autowired private WebApplicationContext wac; private MockMvc mockMvc; 2:然后加上:

@Before
public void setup() {
	this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}

然后就可以使用mockMvc

5 常见的第三种方式:使用TestRestTemplate

@RunWith(SpringRunner.class) @SpringBootTest(classes = App.class,webEnvironment = WebEnvironment.RANDOM_PORT) 直接注入: @Autowired private TestRestTemplate rest;

然后就可以直接使用TestRestTemplate了

6 其它

Springboot还有一些专项的检查,比如:@DataJpaTest、@JdbcTest、@DataMongoTest、@RestClientTest、@JsonTest等等

cc老师2020年高级架构师系统培训课程7月6号正式开课,现在618活动,限时折扣中。至少300学时录播课程,60小时直播课,内容包含最新架构体系,现主流的架构,以及即时更新最新的技术,从理论到实践,以及如何解决问题。面试常用的 Netty,Redis,Kafka,Zookeeper,Dubbo, Nginx + openResty + kong + Lua, ElasticSearch等技术都深入源码层级,轻松掌握这些技术,从容应对面试。对于有想跟我一样有着像提高自身技术的同学,课程的详情都在私塾的首页详细说明了,感兴趣的小伙伴,可以一起去 【私塾在线 】 学习

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!