写了一个action负责文件下载的方法,大概代码如下这样子:
java 代码
- public class TravelAdminUploadAction extends BaseAction{
- private Resource resource;
- private ResourceService resourceService;
- private FileInputStream inputStream;
- private String attachmentName;
- public String downLoadFile() throws Exception {
- resource = resourceService.getResource(id);
- if(resource.getSumLoadCount() != null ){
- resource.setSumLoadCount(resource.getSumLoadCount() + 1 );
- }else{
- resource.setSumLoadCount(1);
- }
- resourceService.updateResource(resource);
- attachmentName = URLEncoder.encode(resource.getAttachmentName(),"UTF-8");
- File input = new File(resource.getResourceUrl());
- inputStream = new FileInputStream(input);
- return SUCCESS;
- }
- 。。。。。。
- }
写的测试代码大概如下这样子:
java 代码
- public class TravelAdminUploadActionTest extends TestCase {
- private MockControl control;
- private ResourceService resourceService;
- protected void setUp() throws Exception {
- control = MockControl.createControl(ResourceService.class);
- resourceService = (ResourceService) control.getMock();
- }
- public void testDownLoadFile() throws Exception {
- Resource resource = new Resource();
- resource.setAttachmentName("xxxxxx");
- resource.setResourceUrl("c://WINDOWS/winhelp.exe");
- resourceService.getResource(resource.getId());
- control.setReturnValue(resource);
- resourceService.updateResource(resource);
- control.setDefaultVoidCallable();
- control.replay();
- TravelAdminUploadAction action = new TravelAdminUploadAction();
- action.setId(resource.getId());
- action.setInputStream(new FileInputStream(new File(
- "c://WINDOWS/winhelp.exe")));
- action.setResourceService(resourceService);
- action.setResource(resource);
- assertEquals(Action.SUCCESS, action.downLoadFile());
- control.verify();
- }
- }
测试是通过了,但是单元测试是不应该跟环境偶合在一起的,
现在测试环境里面用了c://WINDOWS/winhelp.exe这个文件,我特意找的window上都有的文件,
但是放在linux下面的话,这个测试肯定就通不过了,
不知道各位有没有碰到这样的情况,是怎样解决的,可否指点一二