[单元测试]jmockit+SpringMVC整合并测试Controller层方法(三)
来源:互联网 发布:软件系统发布流程 编辑:程序博客网 时间:2024/06/06 02:55
jmockit 解决powermockito内存溢出问题
之前用powermockito成功解决静态方法mock问题,单个测试类运行看似一切正常,当项目所有的单元测试方法一起跑的时候,就呵呵啦(内存溢出.....)。试着通过扩大jdk内存,仍然无法解决。
后来bai度各种尝试,发现jmockit可以解决内存溢出问题。关于jmokit更详细的博客,可以搜到一堆,这里只做最简单的测试案例,以作备忘。
之前用powermockito成功解决静态方法mock问题,单个测试类运行看似一切正常,当项目所有的单元测试方法一起跑的时候,就呵呵啦(内存溢出.....)。试着通过扩大jdk内存,仍然无法解决。
后来bai度各种尝试,发现jmockit可以解决内存溢出问题。关于jmokit更详细的博客,可以搜到一堆,这里只做最简单的测试案例,以作备忘。
1.maven引入jmockit
<!-- jmockit --><dependency> <groupId>org.jmockit</groupId> <artifactId>jmockit</artifactId> <version>1.32</version> <scope>test</scope></dependency><!-- jmockit -->
说明: jmockit需在放在junit上面,防止出现异常。
2.BaseJunit4 基类的配置
import static org.junit.Assert.assertEquals;import mockit.Mocked;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.transaction.TransactionConfiguration;import org.springframework.transaction.annotation.Transactional;@RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试@ContextConfiguration (locations={"classpath:/context-biz-test.xml","classpath:META-INF/app_config/context/context-shiro.xml"}) //加载配置文件@Transactional@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)public class BaseJunit4 {public static final Logger logger = LoggerFactory.getLogger();@Mocked public UserUtils userUtils;@Testpublic void test(){ assertEquals(1, 1);}}说明:@Mocked:mock静态类,之后录制方法预期行为时,可以直接使用。
3.单元测试方法案例:
public class AssetScrapHandleControllerTest extends BaseJunit4 {@Resourceprivate static AssetScrapHandleController controller;@Resource(name=IAssetScrapHandleAction.ACTION_ID)private IAssetScrapHandleAction aSHAction;@Beforepublic void befor(){//依赖注入相应的actionReflectionTestUtils.setField(controller, "assetScrapHandleAction", aSHAction);}@Testpublic void testAssetScrapHandleList() {Map map = new HashMap(); //录制mock方法的预期行为new Expectations() {{OrganizationBO bo = new OrganizationBO();bo.setLeavel("L0");userUtils.getLoginUserCom(); //当执行getLoginUserCom()方法时result=bo; //返回预定义结果bo}{UserBO userbo = new UserBO();userbo.setOrgCode("RS1100");LoginUser loginUser = new LoginUser(userbo);userUtils.getUser();result=loginUser;}};//模拟请求 MockHttpServletRequest request = new MockHttpServletRequest();request.setParameter("orgCode", "RS1100");CurrentPage page = new CurrentPage();map = controller.getAssetScrapHandleList(request, page); boolean actual = true; assertEquals(Integer.valueOf(map.get("total").toString())>=1, actual); }}说明:如果一个方法中,存在两个需要mock的静态方法,只需要使用{}括号,分隔开来就可以。
阅读全文
0 0
- [单元测试]jmockit+SpringMVC整合并测试Controller层方法(三)
- [单元测试]PowerMock+SpringMVC整合并测试Controller层方法(二)
- PowerMock+SpringMVC整合并测试Controller层方法(一)
- java使用jUnit,jMockit,dbunit做DAO层单元测试方法
- SpringAop与SpringMVC整合(controller层对AOP支持)
- 单元测试-JMockit中使用参数化(多参数)测试
- ssm框架搭建(三)-controller层-springMVC
- SpringMVC中web层controller的单元测试小demo
- springmvc controller 单元测试
- 如何为 SpringMVC 编写单元测试:普通 Controller 测试
- springMVC项目,测试controller 方法的 jsp
- [ SpringMVC ] 往后台传集合(json)参数并在Controller层获取
- SpringMVC controller层模板
- springmvc controller层
- springMVC中的controller层
- junit 测试springMVC的Controller、Service层代码
- 三大框架整合ssh(四)-----controller层及页面
- Mockmvc单元测试controller层代码
- CMake can't find Curses
- 移动窗口消息
- 【Linux】文件内容查看——cat、more、less、head...
- ubuntu14.04 安装微信&shadowsocks及配置全局代理
- putty提示Network error:Software caused connection abort
- [单元测试]jmockit+SpringMVC整合并测试Controller层方法(三)
- Javascript 文件的同步加载与异步加载
- 设计模式:策略模式
- js 里面的this
- 【css】CSS样式初始化代码
- mac安装tensorflow
- 前端性能优化笔记
- 三种方法抓取猫眼电影top100信息
- centos 5 更换软件源