如何编写Excel Upload的Junit测试?

时间:2019-03-13 06:19:02

标签: java excel testing junit apache-poi

伙计们。我是学习Java的初学者。现在我必须在公司演示项目中编写Excel上载功能的Junit测试。

@RequestMapping(value = "/excelImport")
public ModelAndView excelImport(@RequestParam(value = "filename")MultipartFile file,
        ModelAndView mav) {
    session.setAttribute("imported",false);//セッションのインポート記録をリセットして、次の操作を影響しないように
    List<RetirementPayAndHealthInsurance> errorList= new ArrayList<>();//エラーデータリスト
    List<RetirementPayAndHealthInsurance> importList = new ArrayList<>();//導入されたデータリスト
    int wnt = 0;//エラー数
    int cnt = 0;//正常数
    String fileName = file.getOriginalFilename();
    if(file.isEmpty()) {    //ファイル選択なしにインポートボタンを押す場合
        mav.setViewName("redirect:/retailList");
        return mav;
    }else {

        try {
            Map<String,List<RetirementPayAndHealthInsurance>> map = retirementPayAndHealthInsuranceService.batchImport(fileName, file);
            errorList = map.get("errorList");
            importList = map.get("importList");
        } catch (Exception e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }
        if(errorList!=null) {//エラーリストあるの場合
            wnt = errorList.size();//エラー数
            mav.addObject("errorList",errorList);
            session.setAttribute("errorList", errorList);
        }
        if(importList!=null) {
            cnt = importList.size();//正常数
        }
        //インポートボタン と 導出ボタンを分けるため設定の記録
        session.setAttribute("imported",true);
        mav.addObject("wnt",wnt);//エラー数
        mav.addObject("cnt",cnt);//正常数
        mav.setViewName("/retailExcelImport");
        return mav;
    }
}

我将在下面解释我的逻辑。

excel上载将处理并向我们显示成功导入的数据编号和错误,服务将successList,errorList放入映射中并返回到控制器,然后计算它们的大小。然后我可以导出并重新编辑错误数据,并再次执行此过程,直到完成。

现在我想为此编写junit测试。但是我找不到excel上载测试的类似示例,请帮帮我,谢谢!

2 个答案:

答案 0 :(得分:0)

没有必要自动上传excel文件。假设您的浏览器运行正常。但是您必须测试数据的处理。

在测试用例中,您必须:

  1. 准备一些测试数据:创建MultipartFile testDataFileModelAndView testDataMav
  2. 创建调用方法excelImport(testDataFile, testDataMav)
  3. 比较返回值和期望值

答案 1 :(得分:0)

您可以创建一个MockMultiPartFile并将其传递给被测方法:

MultipartFile file = new MockMultipartFile("filename", "someTestFile.xls", "application/vnd.ms-excel", new ClassPathResource("someTestFile.xls").getInputStream());

someTestFile.xlstest/resources文件夹中的文件。参数"filename"应该与@RequestParam中使用的值相同。 @RequestParam(value = "filename")