软件测试中单元测试之Action的测试

Hayley ·
更新时间:2024-11-10
· 850 次阅读

  Action的测试是比较辛苦的。因为它依赖与其他的环境(比如tomcat)。   在我的印象中,基于struts的测试是很麻烦的,因为对于execute方法,你必须mock两个对象进去。   还好。基于Webwork的测试相对简单些。   下面让我们来测试一个例子吧   java代码   Account account;   IAccountService accountService;   public void setAccount(Account account){   this.account=account;   }   public void setAccountService(IAccountService accountService){   this.accountService=accountService;   }   public String regist()throws Exception{   if(account==null){   account=new Account();   return INPUT;   }   if(!validForm(account))   return INPUT;   try{   accountService.regist(account);   }catch(ObjectExistsException e){   e.printStackTrace();   return INPUT;   }   return SUCCESS;   }   private boolean validForm(Account e){   if(e.getName()==null||e.getName().trim().equals(""))   return false;   if(e.getPassword()==null||e.getPassword().trim().equals(""))   return false;   return true;   }   有经验的程序员见到上面的代码应该知道怎么测试了。   我们只需setAccount,跟setAccountService即可,   而Account本身来讲是是个po,所以可以自己new一个   AccountService则可以mock一个。真是太完美了,我太喜好mock,它总是给我惊喜   java代码   package org.wuhua.action;   import junit.framework.TestCase;   import org.easymock.MockControl;   import org.wuhua.exception.ObjectExistsException;   import org.wuhua.model.Account;   import org.wuhua.service.IAccountService;   import sms.king.AccountManager;   import com.opensymphony.xwork.Action;   public class AccountActionTest extends TestCase{   private MockControl control;   IAccountService accountService;   protected void setUp()throws Exception{   control=MockControl.createControl(IAccountService.class);   accountService=(IAccountService)control.getMock();   }   public void testRegistOk()throws Exception{   Account employee=new Account("name");   employee.setPassword("password");   accountService.regist(employee);   control.setVoidCallable(1);   control.replay();   AccountAction action=new AccountAction();   action.setAccount(employee);   action.setAccountService(accountService);   assertEquals(Action.SUCCESS,action.regist());   control.verify();   }   public void testRegistNameExists()throws Exception{   Account employee=new Account("name");   employee.setPassword("password");   accountService.regist(employee);   control.setThrowable(new ObjectExistsException(""));   control.replay();   AccountAction action=new AccountAction();   action.setAccount(employee);   action.setAccountService(accountService);   assertEquals(Action.INPUT,action.regist());   control.verify();   }   }   ok,一个测试的例子好了。



单元 action 软件测试 单元测试 测试 软件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章