Spring Boot单元测试

一个测试类包含下面两个注解:

@RunWith(SpringRunner.class)
@SpringBootTest

测试类中可直接注入接口:

@Resource
MyServerMgr myServerMgr;

在方法上加@Test表示它是个测试方法:

@Test
public void query() {
 String result = myServerMgr.query();
 log.info("test query result is {}.", result);
 //使用断言判断结果
 assertEquals(result, "query result");
}

可以通过@Before和@After注解修饰的方法,来表示测试方法执行前和执行后的行为。

@Before
public void setUp() throws Exception {
 log.info("Before setUp.");
}

@After
public void tearDown() throws Exception {
 log.info("After tearDown.");
}

至此一个简单的单元测试就完成了。

Spring Mock MVC:模拟Servlet容器里的测试控制器。

下面部分介绍如何测试Spring Controller API。

Controller测试类需要额外增加@WebAppConfiguration注解:

@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration

需要在测试类中注入WebApplicationContext:

@Resource
private WebApplicationContext webApplicationContext;

需要使用MockMvc模拟发送rest请求,所以需要定义MockMvc变量并在测试方法执行前初始化它:

 private MockMvc mockMvc;

 @Before
 public void setUp() throws Exception {
 log.info("set mockmvc");
 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
// mockMvc = MockMvcBuilders.standaloneSetup(webApplicationContext).build();
 }

需要说明的是,Mock MVC有两种构建方式:

standaloneSetup:手工创建并配置的控制器。

webAppContextSetup:根据Spring应用程序上下文来构建Mock MVC。

我们采用webAppContextSetup方式。

使用@Test注解声明测试方法:

@Test
public void query() throws Exception {
 mockMvc.perform(get("/myapp"))
 .andExpect(status().isOk())
 .andExpect(content().string("query result"));
}

总结一下:

1、需要熟悉并掌握@RunWith(SpringRunner.class)、@SpringBootTest、@Before、@After、@Test几个注解的用法。

2、测试服务端接口和测试Controller的不同是Controller需要额外的加载上下文并初始化MockMvc,并通过MockMvc模拟发送rest请求,通过断言判定结果是否正确。

原文地址:https://www.cnblogs.com/zjiuwei/p/9521072.html

时间: 2024-10-30 11:03:31

Spring Boot单元测试的相关文章

Spring Boot 单元测试示例

Spring 框架提供了一个专门的测试模块(spring-test),用于应用程序的单元测试. 在 Spring Boot 中,你可以通过spring-boot-starter-test启动器快速开启和使用它. 在pom.xml文件中引入maven依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artif

IDEA + Spring boot 单元测试

1. 创建测试类 打开IDEA,在任意类名,任意接口名上,按ctrl+shift+t选择Create New Test image 然后根据提示操作(默认即可),点击确认,就在项目的/test/java下的对应包里,生成了与类对应的测试类. 如果没有"Create New Test",请更新idea版本或者安装JUnitGenerator V2.0 1.1 安装JUnitGenerator V2.0 注意,本步骤是找不到那个"Create New Test",再做的

spring boot单元测试(转)

Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性.凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. 刚好前段时间写了一些关于SpringBoot的帖子,正好现在把Junit再拿出来从几个方面再说一下,也算是给一些新手参考了. 那么先简单说一下为什么要写测试用例1. 可以避免测试点的遗漏,为了更好的进行测试,可以提高测试效率2. 可以自动测试,可以在项目打包前进行测试校验3. 可以及时发现因为修改代

Spring Boot的单元测试(Unit Test)

最近做了一些Spring Boot单元测试方面的东西,总结一下. 单元测试尽量要和Spring Boot框架减少耦合度,当你在测试某一项功能点是需要mock太多的对象时你就应该意识到这个功能点的耦合度太高了 使用Constructor Injection,不要使用Field Injection.这样才能更容易写单元测试代码.在Spring Framework 4.3以后,如果你只有一个Constructor, 就不再需要写@Autowired,Spring会默认他是autowire目标: pub

Spring Boot的单元测试(Unit Test)(一)

最近做了一些Spring Boot单元测试方面的东西,总结一下. 单元测试尽量要和Spring Boot框架减少耦合度,当你在测试某一项功能点是需要mock太多的对象时你就应该意识到这个功能点的耦合度太高了 使用Constructor Injection,不要使用Field Injection.这样才能更容易写单元测试代码.在Spring Framework 4.3以后,如果你只有一个Constructor, 就不再需要写@Autowired,Spring会默认他是autowire目标: pub

21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

转载:http://blog.csdn.net/linxingliang/article/details/52069490 上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet 一样,不清楚的可以查看下上一篇文章(20): 本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener:使用注解 @ServletComponentScan//这个就是扫描相应的Se

最全spring boot视频系列,你值得拥有

================================== 从零开始学Spring Boot视频 ================================== àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share [截止到201

spring boot?Swagger2文档构建及单元测试

首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容. @Controller:修饰class,用来创建处理http请求的对象 @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Contro

Spring Boot构建RESTful API与单元测试

全套教程:http://git.oschina.net/didispace/SpringBoot-Learning 首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容. @Controller:修饰class,用来创建处理http请求的对象 @RestController:Spring4之后加入的注解,原来在@Control