`
温柔一刀
  • 浏览: 858199 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork 下载文件的单元测试问题

阅读更多

写了一个action负责文件下载的方法,大概代码如下这样子:

java 代码
  1. public class TravelAdminUploadAction extends BaseAction{   
  2.   
  3.     private Resource resource;   
  4.   
  5.     private ResourceService resourceService;       
  6.        
  7.     private FileInputStream inputStream;   
  8.        
  9.     private String attachmentName;        
  10.   
  11.     public String downLoadFile()  throws Exception {   
  12.         resource = resourceService.getResource(id);    
  13.         if(resource.getSumLoadCount() != null ){   
  14.             resource.setSumLoadCount(resource.getSumLoadCount() + 1 );   
  15.         }else{   
  16.             resource.setSumLoadCount(1);   
  17.         }   
  18.         resourceService.updateResource(resource);   
  19.         attachmentName = URLEncoder.encode(resource.getAttachmentName(),"UTF-8");   
  20.         File input = new File(resource.getResourceUrl());   
  21.         inputStream  = new FileInputStream(input);   
  22.         return SUCCESS;   
  23.     }    
  24.     。。。。。。
  25. }   

写的测试代码大概如下这样子:

java 代码
  1. public class TravelAdminUploadActionTest extends TestCase {   
  2.   
  3.     private MockControl control;   
  4.   
  5.     private ResourceService resourceService;         
  6.   
  7.     protected void setUp() throws Exception {   
  8.         control = MockControl.createControl(ResourceService.class);   
  9.         resourceService = (ResourceService) control.getMock();   
  10.     }   
  11.   
  12.     public void testDownLoadFile() throws Exception {   
  13.         Resource resource = new Resource();   
  14.         resource.setAttachmentName("xxxxxx");   
  15.         resource.setResourceUrl("c://WINDOWS/winhelp.exe");   
  16.         resourceService.getResource(resource.getId());   
  17.         control.setReturnValue(resource);      
  18.         resourceService.updateResource(resource);    
  19.         control.setDefaultVoidCallable();   
  20.         control.replay();   
  21.         TravelAdminUploadAction action = new TravelAdminUploadAction(); 
  22.         action.setId(resource.getId());   
  23.         action.setInputStream(new FileInputStream(new File(   
  24.                 "c://WINDOWS/winhelp.exe")));      
  25.         action.setResourceService(resourceService);   
  26.         action.setResource(resource);   
  27.         assertEquals(Action.SUCCESS, action.downLoadFile());   
  28.         control.verify();   
  29.     }      
  30. }  

测试是通过了,但是单元测试是不应该跟环境偶合在一起的,

现在测试环境里面用了c://WINDOWS/winhelp.exe这个文件,我特意找的window上都有的文件,

但是放在linux下面的话,这个测试肯定就通不过了,

不知道各位有没有碰到这样的情况,是怎样解决的,可否指点一二

 

分享到:
评论
2 楼 温柔一刀 2007-03-06  
谢谢Readonly,你那个方法不适合我这个测试,我需要的是一个string字符串类型文件地址,我用了相对路径就可以了
1 楼 Readonly 2007-03-06  
把需要upload的文件放到ClassPath下面,然后测试代码里面用ClassLoader读入:
this.getClass().getClassLoader().getResourceAsStream("yourfile.exe")

相关推荐

Global site tag (gtag.js) - Google Analytics