Junit 测试文件上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Junit 测试文件上传相关的知识,希望对你有一定的参考价值。

文件上传,如何进行单元测试吶?从网上找了半天没找到一个可行的方法, 经过我自己的琢磨,找到了一个方法。 现分享下, 欢迎留言评论。

我的Controller 是基于  HttpServletRequest request, HttpServletResponse response 作为方法的入参数; 大致如下 

 public ImportCampaignCustGroupResponse importCustGroup(

            HttpServletRequest request, HttpServletResponse response)

            throws Exception {

        return campaignCustGroupService.importExcelFile(request, response);

    }


单元测试代码如下 ; 注意必须在 创建MockMultipartHttpServletRequest 对象时,把WebApplicationContext 对象绑定到MockMultipartHttpServletRequest 实例上,否则在执行 

request.getServletContext() .getRealPath 这行代码时 会抛异常。




@RunWith(SpringRunner.class)

@SpringBootTest

@ComponentScan(basePackageClasses = MktCampaignCustGroupControllerTest.class)

@WebAppConfiguration

public class MktCampaignCustGroupControllerTest {


  

   @Autowired

    MktCampaignCustGroupController mktCampaignCustGroupController;

    @Autowired

    private WebApplicationContext wac;


    

 @Test

    public void testImportCustGroupTest() throws Exception {

           

       InputStream   inStream = MktCampaignCustGroupControllerTest.class.getResourceAsStream("index.txt");

    byte[] contentInvalid = new byte[inStream.available()];

    while(inStream.read(contentInvalid) != -1) {

    }

    MockMultipartHttpServletRequest request1 = new MockMultipartHttpServletRequest(this.wac.getServletContext());

    request1.setParameter("custGroupId", custGroupId);

    request1.setParameter("companyId", COMPANY.DM);

    request1.setMethod("POST");

    request1.setContentType("multipart/form-data");

    request1.addFile(new MockMultipartFile("custName", "\\index.txt", "text/plain", contentInvalid) );

    result = mktCampaignCustGroupController.importCustGroup(request1, response);

    Assert.assertNotNull(result);

    Assert.assertEquals(IResultCode.ILLEGAL_PARAMS, result.getResult().getResultCode()); 

    Assert.assertEquals("不支持导入非Excel文件", result.getResult().getResultMessage()); 

    System.out.println(result);

    }

}




本文出自 “一代宗师” 博客,请务必保留此出处http://765682.blog.51cto.com/755682/1973843

以上是关于Junit 测试文件上传的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC文件上传与下载

使用fastDFS上传和下载图片文件

Python接口测试文件上传

Java4lambda,Stream流,File类,乱码,流,Properties,Tcp,文件上传/UUID/Junit,反射/注解,类加载器,代理/模板/单例/工厂,xml

java 模拟网络上传文件测试文件上传压力测试

java 模拟网络上传文件测试文件上传压力测试