深入浅出学测试——(完)

网上有很多使用EasyMock的expect()来设置模拟对象request的参数的,我们就不去做重复工作了,下面给大家讲一下网上没有的案例,是我们项目中的真实案例:

    本文也是是对《让导出Excel变的easy一些!》一文的测试,导出Excel具体怎么导出请看让导出Excel变的easy一些!》,本节重点是对EasyMock的补充,使用EasyMock模拟response.getOutputStream()。

代码如下:

package com.jhaso.action;

 

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import junit.framework.TestCase;

 

import org.easymock.EasyMock;

 

public class AgeContActionTest extends TestCase {

    /**

     *    

     *     @throws IOException

     *     @throws ServletException

     */

    public void testToReportExcel() throws IOException,     ServletException {

         /**

          * 1)创建HttpServletRequest模拟对象。 2)设置HttpServletRequest对象的模拟属性和方法 3)设置回访模式

          * 4)创建LoginServlet实例,并使用模拟的request执行测试 5)调用verify()执行验证

          */

         // 获取Mock對象

         HttpServletRequest request = EasyMock

                  .createMock(HttpServletRequest.class);

         HttpServletResponse response = EasyMock

                  .createMock(HttpServletResponse.class);

         List<String> c = new     ArrayList<String>();

         c.add("Content-Disposition");

         c.add("attachment;fileName=合同报表.xls");

         // 最重要--模拟request.getParameter()的值

         EasyMock.expect(response.getHeaderNames()).andReturn(c);

         EasyMock.expect(response.getOutputStream()).andReturn(

                  new     ServletOutputStream() {

                      public void write(int b) throws IOException {

                          ByteArrayOutputStream     OutputStreamBuffer = new ByteArrayOutputStream();

                          OutputStreamBuffer.write(b);

                      }

                      //重写write方法是必不可少!

                      public void write(byte[] data, int offset, int length) {

                          ByteArrayOutputStream     OutputStreamBuffer = new ByteArrayOutputStream();

                          OutputStreamBuffer.write(data, offset, length);

                      }

                  });

         // 設置回访模式

         EasyMock.replay(request);

         EasyMock.replay(response);

         // 进行测试

         AgeContAction aca = new AgeContAction();

         aca.toReportExcel(request, response);

        

// 在调用的模拟对象前,一定要执行verify操作

         EasyMock.verify(request);

         //注意:response这个可以不verify,如果verify本次测试将显示红条,但不影响导出的。

         //EasyMock.verify(response);

    }

}

 

【注意】:

EasyMock.expect(response.getOutputStream()).andReturn(

         new ServletOutputStream() {

public void write(int b) throws IOException {

         ByteArrayOutputStream OutputStreamBuffer = new ByteArrayOutputStream();

         OutputStreamBuffer.write(b);

         }

         //重写write方法是必不可少!

         public void write(byte[] data, int offset, int length) {

         ByteArrayOutputStream OutputStreamBuffer = new ByteArrayOutputStream();

         OutputStreamBuffer.write(data, offset, length);

         }

});

这段代码是你能否测试成功的关键!必须对自己去重写writer方法!

转载于:https://my.oschina.net/u/2505908/blog/530532

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值