Spring boot 是一款快速的web开发框架。它包含了基本的Spring mvc, Spring security 还有ORM 框架Hibernate等组件。使用非常方便,一旦尝试,基本告别SSH框架。
话不多说,今天来看看怎么基于Spring boot做单元测试。
首先,我们需要在中添加必要的依赖
<dependencies>
<dependency>
<groupId></groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId></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";
}
}
测试代码
package ;
import static .*;
import ;
import ;
import ;
import ;
import ;
import ;
import .junit4.SpringJUnit4ClassRunner;
import ;
import ;
import ;
@RunWith()
@SpringApplicationConfiguration(classes = )
@WebAppConfiguration
public class HomeControllerTest {
private static ConfigurableApplicationContext context;
private static HomeController controller;
@BeforeClass
public static void setUp() {
context = (, "");
controller = (HomeController) ("homeController");
}
@Test
public void testHello() {
assertEquals((), "world");
}
}
注意一下几点:
1. 在测试用例前必须调用context = (, "");
用过Spring的应该清楚,以前我们是通过一个来生成这个context,现在用的是全注解方式。
2. 在这个上下文context中拿到已经注入的controller,调用()方法,这是一个潜在的规则,Spring 在注入代码的时候变量名是按照驼峰命名的。
3. 跑hello()方法
是比较简单,当然,按道理应该还要写一个AfterClass的方法来销毁Spring boot程序,但是研究半天没找到解决办法,而且好像测试用例结束后就自行销毁了,应该不是大问题。