Spring项目使用JUnit4进行测试

时间:2022-11-10 05:07:36

作为java web程序员,我们经常要写junit测试,在不启动整个web项目的情况下,测试自己的service实现或者是dao实现,我们来充分利用下junit4的强大功能。

1. 新建一个junit4的测试类

测试类要继承AbstractJUnit4SpringContextTests类,该父类能够调用spring context


2. 该junit测试类的源码

package com.songyh.modules.system.service;

import com.songyh.modules.system.entity.SysRole;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

import java.util.List;

/**
* 系统角色API测试类
* Created by songyh on 2017/2/10.
*/

@ContextConfiguration(locations = {"classpath:spring/spring-context*.xml"})
public class SysRoleServiceTest extends AbstractJUnit4SpringContextTests {
//注入
@Autowired
private SysRoleService sysRoleService;
/**
* 执行测试,就会执行有@Test注解的方法,相当于普通java类的main方法
* 该实例中可以直接调用spring已经注入的bean即sysRoleService
*/

@Test
public void testGetSysRoleByUserId() {
String userId = "867ccabfed5e40e480438f72dcab7126";
List<SysRole> sysRoleList = sysRoleService.getSysRoleByUserId(userId);
for(SysRole sysRole : sysRoleList) {
System.out.println(sysRole.getRoleName());
}
}
}

3.测试类代码说明

@ContextConfiguration(locations = {"classpath:spring/spring-context*.xml"})
public class SysRoleServiceTest extends AbstractJUnit4SpringContextTests {

以上注解,会将spring context的bean全部注册到context中,这样在junit类中就可以随意使用spring 相关的实体bean对象了。当然我们的测试类必须继承AbstractJUnit4SpringContextTests
注意:
如果是maven多模块项目,很可能测试类和spring配置文件不在一个模块下,这种需要拷贝资源文件到测试的模块中(我只找到这种方法,如果有其他方法请指教)


4. 运行该junit

执行测试,有@Test注解的方法,就相当于普通java类的main方法,每个junit测试类至少要有一个@test注解的方法,可以有多个,多个则按顺序执行方法。

@Test
public void testGetSysRoleByUserId() {
String userId = "867ccabfed5e40e480438f72dcab7126";
List<SysRole> sysRoleList = sysRoleService.getSysRoleByUserId(userId);
for(SysRole sysRole : sysRoleList) {
System.out.println(sysRole.getRoleName());
}
}

转自: http://www.codingyun.com/article/80.html