使用springMVC 自带的junit 完成文件的上传测试
测试后台controoler类ConfigController.java 中 doImput()方法:
/**
* 数据导入
*
* @param table
* @param files
* @param request
*/
@RequestMapping("/doImput")
@ResponseBody
public void doImput(@RequestParam("execelData") MultipartFile mFile, HttpServletRequest request,ImputCmd cmd) {
DynamicMapping dm = new DynamicMapping();
File file = new File(DynamicHelper.getMappingPath(), cmd.getTable() + ".hbm.xml");
List<List<Object>> list = new ArrayList<List<Object>>();
ImportLog impLog = new ImportLog();
try {
dm = DynamicHelper.parseDynamicMapping(file);
//获取文件类型
String fileType = mFile.getContentType();
//execel
if ("application/vnd_ms-excel".equalsIgnoreCase(fileType)) {
//解析获取excel文件的数据
//转换输入流
InputStream is = mFile.getInputStream();
//获取每个单元格的value值
list = DataHandler.countXSL2003Data(is, mFile.getOriginalFilename(),cmd.getStartLine());
//导入数据
if (list != null || list.size()>0) {
impLog = DataHandler.imputData(dm,list,true);
}
}
} catch (Exception e) {
e.printStackTrace();
e.getStackTrace();
}
}
测试方法:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml", "classpath:spring-mvc.xml", "classpath:spring-hibernate.xml" })
public class TestConfigController {
@Autowired
private ConfigController configController;
/**
* 导入数据单元测试
*
* @throws Exception
*/
@Test
@Transactional
@Rollback(false)
public void testDoImput() throws Exception {
ImputCmd cmd = new ImputCmd();
cmd.setStartLine(5);
cmd.setTable("t29928_28aa002");
MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
request.setMethod("POST");
request.setContentType("multipart/form-data");
request.addHeader("Content-type", "multipart/form-data");
FileInputStream fis = new FileInputStream("C:/Users/Administrator/Desktop/数据导入_非正常户信息_20170414.xls");
MockMultipartFile mfile = new MockMultipartFile("C:/Users/Administrator/Desktop", "数据导入_非正常户信息_20170414.xls", "application/vnd_ms-excel", fis);
this.configController.doImput(mfile, request, cmd);
Assert.assertTrue(true);
}
}
大家进行单元测试时,可通过设置返回值进行断言。