#unit-testing #file-upload #nullpointerexception #jmockit
Вопрос:
Я застрял с этим тестовым случаем загрузки файлов с использованием java,springmvc,jmockit, когда я пытаюсь запустить тестовый случай, он выдает исключение FileNotFoundException в инструкции Path. утверждение пути-это мое рабочее пространство проекта, Нужна помощь, ребята, заранее спасибо!
@RequestMapping(params = "action=uploadAdminTemplate", method = RequestMethod.POST)
public String uploadAdminTemplate(HttpServletRequest request,
@ModelAttribute(UPLOAD_ITEM_VO) UploadItemVO uploadItemVO,
BindingResult result, Model model) throws NPIException, SQLException, NamingException,
InstantiationException, IllegalAccessException {
LOGGER.info("START");
request.setAttribute(UPLOAD_ITEM_VO, uploadItemVO);
if (result.hasErrors()) {
for (ObjectError error : result.getAllErrors()) {
LOGGER.error("Error: " error.getCode() " - "
error.getDefaultMessage());
}
return UserConstants.AdminTemplateUploadView;
}
CommonsMultipartFile commonsMultipartFile = uploadItemVO
.getAdminTemplate();
@Test
public void uploadAdminTemplate() throws IOException, NPIException, InstantiationException, IllegalAccessException, SQLException, NamingException {
session = new MockHttpSession();
((MockHttpSession) session).clearAttributes();
request = new MockHttpServletRequest();
((MockHttpServletRequest) request).setSession(session);
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(
request));
UploadItemVO uploadItemVO=new UploadItemVO();
AdminTemplateUploadController adminUploadControllerTest = new AdminTemplateUploadController();
Path path = Paths.get("/NPI-Maven/Files/db_value.txt");
byte[] data = Files.readAllBytes(path);
MultipartFile file=new MockMultipartFile("db_value.txt","db_value.txt","text/plain",data);
CommonsMultipartFile f=(CommonsMultipartFile)file;
MockMultipartHttpServletRequest mockRequest = new MockMultipartHttpServletRequest();
mockRequest.addFile(file);
mockRequest.setMethod("POST");
uploadItemVO.setMessages("Updating...");
uploadItemVO.setAdminTemplate(f);
new Expectations() {{
AdminTemplateUploadControllerTest.this.result.hasErrors();
result=false;
}};
model.addAttribute(uploadItemVO);
request.setAttribute("upload", uploadItemVO);
session.setAttribute("UploadFile",adminUploadControllerTest.uploadAdminTemplate(request,uploadItemVO,result, model));
}