Junit4测试Controller
前言
使用注入controller的方式测试controller接口
Controller层
/*** 组织机构管理的处理*/
@Controller
@RequestMapping("/system/dept")
public class DeptController {/*** 组织机构管理服务*/@Autowiredprivate DeptService deptService;/*** 权限管理服务*/@Autowiredprivate AuthorService authorService;/*** 组织机构管理页面入口* @return 跳转到组织机构管理页面*/@RequestMapping("/show")public String show(ModelMap map, String menuId, HttpServletRequest request) {//得到用户信息UserInfo users = Util.getSessionUserInfo(request);//保存当前用户的所属区域map.put("regionCode", users.getRegionCode());//得到操作权限Map operation = authorService.getOperPermission(users.getRoleIdList(), menuId);map.put("operation", operation);return "system/organization/organizationList";}
}
单元测试类
package com.wx.app.ygp.action.system;import com.wx.app.ygp.entity.system.UserInfo;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;import java.util.ArrayList;
import java.util.List;/*** @Author huangjp* @create in 2017-8-23 13:45* @Description : 部门管理控制层的测试类**/
@RunWith(SpringJUnit4ClassRunner.class) //这个必须使用junit4.9以上才有
@ContextConfiguration(locations = {"classpath:spring-test.xml","classpath:spring-mybatis.xml"})
@TransactionConfiguration(defaultRollback=true) //配置事务的回滚,对数据库的增删改都会回滚,便于测试用例的循环利用
@Transactional //事务处理
public class DeptControllerTest extends AbstractTransactionalJUnit4SpringContextTests {//mock模拟sessionprivate MockHttpSession session;//mock模拟requestprivate MockHttpServletRequest request;@Beforepublic void setUp() throws Exception {this.session = new MockHttpSession();this.request = new MockHttpServletRequest();}@Testpublic void testShow() throws Exception {//创建参数UserInfo userInfo = new UserInfo();userInfo.setRegionCode("360482");List roleIdList = new ArrayList<>();roleIdList.add("2410151");userInfo.setRoleIdList(roleIdList);session.setAttribute("userInfo",userInfo);ModelMap modelMap = new ModelMap();request.setSession(session);String menuId = "21";//构造controllerDeptController deptController = (DeptController) this.applicationContext.getBean("deptController");String result = deptController.show(modelMap, menuId, request);System.out.println("返回值:" + result);}
}
spring-test.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:cache="http://www.springframework.org/schema/cache"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/cachehttp://www.springframework.org/schema/cache/spring-cache-3.2.xsd "> <bean id="ygpProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="locations"><list><value>classpath:db.propertiesvalue>list>property>bean><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"><property name="properties" ref="ygpProperties" />bean> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${base.url}"/><property name="username" value="${base.username}"/><property name="password" value="${base.password}"/><property name="driverClassName" value="${base.driver}"/>bean><bean id="deptController" class="com.wx.app.ygp.action.system.DeptController">bean><bean id="authorService" class="com.wx.app.ygp.service.system.impl.AuthorServiceImpl">bean><bean id="rolePrivilegeService" class="com.wx.app.ygp.service.privilege.impl.RolePrivilegeServiceImpl">bean><bean id="deptService" class="com.wx.app.ygp.service.system.impl.DeptServiceImpl">bean>
beans>
spring-mybatis.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"default-lazy-init="true"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><description>Mybatis Configurationdescription><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource">property>bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource">property><property name="configLocation" value="classpath:mybatis-config.xml">property><property name="mapperLocations" value="classpath:com/wx/app/ygp/**/dao/*.xml">property>bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.wx.app.ygp.dao"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">property>bean><bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"><ref bean="dataSource" />property>bean><bean id="idGenarater"class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer"><property name="incrementerName" value="ss_key_table"/> <property name="columnName" value="sequence"/><property name="cacheSize" value="2"/> <property name="dataSource" ref="dataSource"/>bean>
beans>
测试结果
返回值:system/organization/organizationList
参考资料
- Spring自带mock测试Controller
结语
使用mockmvc测试controller时,显示authorService为null,即service注入失败,不知道是什么原因引起的,待解决。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
