Spring Boot 单元测试

原创 2015年11月17日 16:44:47

         Spring boot 是一款快速的web开发框架。它包含了基本的Spring mvc, Spring security 还有ORM 框架Hibernate等组件。使用非常方便,一旦尝试,基本告别SSH框架。

话不多说,今天来看看怎么基于Spring boot做单元测试。


首先,我们需要在pom.xml中添加必要的依赖

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
</dependencies>

然后看下我们需要进行单元测试的目标代码

@Controller
public class HomeController {

	@ResponseBody
	@RequestMapping("/hello")
	public String hello() {
		return "world";
	}
}


这里是一个controller,我们需要测试hello()是否会返回给我"world"。


测试代码

package com.scm.dashboard.controller;

import static org.junit.Assert.*;

import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.context.ConfigurableApplicationContext;

import com.scm.dashboard.Application;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class HomeControllerTest {
	private static ConfigurableApplicationContext context;
	private static HomeController controller;

	
	@BeforeClass
	public static void setUp() {
		context = SpringApplication.run(Application.class, "");
		controller = (HomeController) context.getBean("homeController");
	}

	@Test
	public void testHello() {
		assertEquals(controller.hello(), "world");
		
	}

}

注意一下几点:

1.  在测试用例前必须调用context = SpringApplication.run(Application.class, "");

     用过Spring的应该清楚,以前我们是通过一个application.xml来生成这个context,现在用的是全注解方式。

2. 在这个上下文context中拿到已经注入的controller,调用context.getBean()方法,这是一个潜在的规则,Spring 在注入代码的时候变量名是按照驼峰命名的。

3.  跑hello()方法


是比较简单,当然,按道理应该还要写一个AfterClass的方法来销毁Spring boot程序,但是研究半天没找到解决办法,而且好像测试用例结束后就自行销毁了,应该不是大问题。

SpringBoot入门系列:第七篇 Spring Boot的测试

出于对作者的尊重和感谢,原文地址为 http://blog.csdn.net/lxhjh/article/details/51769968 Spring Boot的测试,和普通项目的...
  • sosfnima
  • sosfnima
  • 2016年07月22日 12:30
  • 35518

SpringBoot-JUnit

上一篇介绍了SpringBoot和项目的初始化 : Maven构建SpringBoot项目这篇基于之前的代码,添加JUnit测试,及介绍JUnit项目依赖自动生成的项目pom.xml中已经包含了Tes...

Spring Boot 学习(一) 快速搭建SpringBoot 项目

快速搭建一个 Spring Boot 项目 部分参考于《深入实践Spring Boot》、《Spring实战 第四版》与程序猿DD的有关博客。...

springboot-数据校验、异常处理、单元测试、打包、日志

springboot-数据校验、异常处理、单元测试、打包、日志springboot-数据校验
  • Inke88
  • Inke88
  • 2017年07月07日 18:55
  • 579

maven中跳过单元测试

你可能想要配置 Maven 使其完全跳过单元测试。 可能你有一个很大的系统,单元测试需要花好多分钟来完成,而你不想在生成最终输出前等单元测试完成。 你可能正工作在一个遗留系统上面,这个系统有一系列的失...

Spring Boot实战之单元测试

Spring Boot实战之单元测试 本文介绍使用Spring测试框架提供的MockMvc对象,对Restful API进行单元测试 Spring测试框架提供MockMvc对象,可以在不需要客户端...
  • sun_t89
  • sun_t89
  • 2016年08月11日 19:53
  • 22932

Spring Boot Junit单元测试

Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性。 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半...
  • catoop
  • catoop
  • 2016年02月26日 23:02
  • 68340

springboot下配置junit测试环境

项目中使用到了spring_boot,我想在项目中写一些单元测试,但是由于对springboot 不熟悉并且springboot的中文资料非常的少,所以花了很长的时间才把springboot的juni...

spring boot 单元测试

引入maven依赖 org.springframework.boot spring-boot-starter-test tes...

spring boot Junit单元测试

Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性。  那么先简单说一下为什么要写测试用例  1. 可以避免测试点的遗漏,为了更好的进行测试,可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring Boot 单元测试
举报原因:
原因补充:

(最多只允许输入30个字)