Как написать тест Junit для загрузки в Excel? - PullRequest
0 голосов
/ 13 марта 2019

Ребята. Я новичок в изучении Java. И теперь мне нужно написать тест Junit для функции загрузки Excel в демонстрационном проекте моей компании.

@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 голосов
/ 21 апреля 2019

Вы можете создать MockMultiPartFile и передать его тестируемому методу:

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

Где someTestFile.xls - это файл в папке test/resources.Аргумент "filename" должен совпадать со значением, используемым в @RequestParam;@RequestParam(value = "filename")

0 голосов
/ 21 апреля 2019

Нет необходимости автоматизировать загрузку файла Excel.Предположим, ваш браузер работает как положено.Но вы должны проверить обработку данных.

В вашем тестовом примере вы должны:

  1. Подготовить некоторые тестовые данные: создать MultipartFile testDataFile, ModelAndView testDataMav
  2. Создать вызов метода excelImport(testDataFile, testDataMav)
  3. Сравнить возвращаемое значение со значением, которое вы ожидаете
...