请教高手:在JUnit中创建FormFile对象的问题
80x88 2007-07-20 10:18:14 FormFile和文件上传控件绑定。正常情况下,这个是从ActionForm中传过来的。现在要对业务方法写测试代码,需要在Junit中手工构造一个FormFile对象,Google出了一个解决方案,如下。问题是:file.getFileSize()调用时抛空指针错误。看了一下代码,原来是fileItem中的dfos为null的原因(在getFileSize方法中有dfos.isInMemory()代码),我用下面的方法构造出来的fileItem的dfos和dfosFile都是null。请教高手,这个问题如何解决。
下面的代码结构是google出来的,其实我也不是特别理解。如果高手能顺便给解释一下也不胜感激。
(Class parentClass = Class
.forName("org.apache.struts.upload.CommonsMultipartRequestHandler");
Class childClass = parentClass.getDeclaredClasses()[0];
Constructor c = childClass.getConstructors()[0];
c.setAccessible(true);
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1000 * 1000 * 10);
factory.setRepository(new File("F:\\temp\\temp"));
FileItem fileItem = factory.createItem("uploadfile",
"application/txt", false, "F:\\temp\\temp\\BUG.txt");
FormFile file = (FormFile) c.newInstance(new Object[] { fileItem });
c.setAccessible(false);
System.out.println(file.getFileSize());