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

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 常见的第一种方式

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

@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)

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

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等等

原文 

https://segmentfault.com/a/1190000023090362

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Springboot快速上手- 第七篇 单元测试

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址