`

单元测试之实践四 Action的测试

阅读更多

Action的测试是比较辛苦的。因为它依赖与其他的环境(比如tomcat)。
       在我的印象中,基于struts的测试是很麻烦的,因为对于execute方法,你必须mock两个对象进去。
      还好。基于Webwork的测试相对简单些。
      下面让我们来测试一个例子吧
      

java 代码
 
  1.       Account account;  
  2. IAccountService accountService;  
  3. public void setAccount(Account account) {  
  4.     this.account = account;  
  5. }  
  6.   
  7. public void setAccountService(IAccountService accountService) {  
  8.     this.accountService = accountService;  
  9. }  
  10.   
  11. public String regist() throws Exception {  
  12.     if(account == null) {  
  13.         account = new Account();  
  14.         return INPUT;  
  15.     }  
  16.       
  17.     if(!validForm(account))   
  18.         return INPUT;  
  19.       
  20.     try {  
  21.         accountService.regist(account);  
  22.     } catch (ObjectExistsException e) {  
  23.         e.printStackTrace();  
  24.         return INPUT;  
  25.     }  
  26.       
  27.     return SUCCESS;  
  28. }  
  29.   
  30. private boolean validForm(Account e) {  
  31.     if(e.getName() == null || e.getName().trim().equals(""))  
  32.         return false;  
  33.     if(e.getPassword() == null || e.getPassword().trim().equals(""))  
  34.         return false;  
  35.     return true;  
  36. }  


有经验的程序员见到上面的代码应该就知道怎么测试了。
我们只需setAccount,跟setAccountService即可,
而Account本身来讲就是是个po,所以可以自己new一个
AccountService则可以mock一个。真是太完美了,我太喜好mock,它总是给我惊喜

java 代码
 
  1. package org.wuhua.action;  
  2.   
  3. import junit.framework.TestCase;  
  4.   
  5. import org.easymock.MockControl;  
  6. import org.wuhua.exception.ObjectExistsException;  
  7. import org.wuhua.model.Account;  
  8. import org.wuhua.service.IAccountService;  
  9.   
  10. import sms.king.AccountManager;  
  11.   
  12. import com.opensymphony.xwork.Action;  
  13.   
  14. public class AccountActionTest extends TestCase {  
  15.     private MockControl control;  
  16.     IAccountService accountService;  
  17.     protected void setUp() throws Exception {  
  18.         control = MockControl.createControl(IAccountService.class);  
  19.         accountService = (IAccountService) control.getMock();  
  20.            
  21.     }  
  22.       
  23.     public void testRegistOk() throws Exception {  
  24.         Account employee = new Account("name");  
  25.         employee.setPassword("password");  
  26.           
  27.        
  28.            
  29.           
  30.         accountService.regist(employee);  
  31.         control.setVoidCallable(1);  
  32.           
  33.         control.replay();  
  34.           
  35.         AccountAction action = new AccountAction();  
  36.         action.setAccount(employee);  
  37.         action.setAccountService(accountService);  
  38.           
  39.         assertEquals(Action.SUCCESS, action.regist());  
  40.           
  41.         control.verify();  
  42.     }  
  43.       
  44.     public void testRegistNameExists() throws Exception {  
  45.         Account employee = new Account("name");  
  46.         employee.setPassword("password");  
  47.           
  48.    
  49.        
  50.           
  51.         accountService.regist(employee);  
  52.         control.setThrowable(new ObjectExistsException(""));  
  53.           
  54.         control.replay();  
  55.           
  56.         AccountAction action = new AccountAction();  
  57.         action.setAccount(employee);  
  58.         action.setAccountService(accountService);  
  59.           
  60.         assertEquals(Action.INPUT, action.regist());  
  61.           
  62.         control.verify();  
  63.     }  
  64. }  
 
ok,一个测试的例子就好了。

分享到:
评论

相关推荐

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part1

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战 part2

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战 part3

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战 part1

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part3

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part5

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part6

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part2

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part4

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试从零开始:LoadRunner入门与提升

    11.3 案例实践:性能测试第二阶段Ajax系统负载测试 307 11.3.1 本轮测试目的 307 11.3.2 测试场景规划 307 11.3.3 负载测试案例分析 309 11.3.4 性能结果量化分析 312 11.4 总结 315 第12章 测试也开发--自开发性能...

    性能测试从零开始:LoadRunner入门与提升-精华笔记-电子书

    软件性能测试 ........软件的性能 ........性能测试 ........如何做性能测试 LoadRunner ........LoadRunner ........LoadRunner脚本语言基础 VU-用户行为的模拟器 ........VU ........录制脚本 ........关联 .........

    JUnit in Action【英文清晰版】

    本书主要介绍在Java软件开发中使用JUnit进行测试的原则、技巧与实践,深入阐述如何编写自动测试。把一段代码隔离开来测试有什么好处,如何判断何时需进行整合测试......

    Struts2 in action中文版

    13.2 对动作进行单元测试 281 13.2.1 将IoC用于测试的优势 281 13.2.2 JUnit与测试 282 13.2.3 测试validation.xml文件 284 13.3 最大化重用 284 13.3.1 使用component标签组件化 285 13.3.2 重用模板化的标签 286 ...

    JUnit in Action中文版.pdf

    主要介绍了在Java软件开发中使用JUnit进行测试的原则、技巧与实践,深入阐述如何编写自动测试,把一段代码隔离开来测试有什么好处,如何判断何时需要进行整合测试,并对如何测试完整的J2EE应用进行了极具价值的讨论...

    Spring+in+action+中文版(第4版)

    《Spring 实战(第4版)》是经典的、畅销的Spring学习和实践指南。 这一版针对Spring 4进行了全面更新。全书分为四部分。第一部分介绍Spring框架的核心知识。第二部分在此基础上介绍了如何使用Spring构建Web应用程序...

    PHP实战--作者:雷勒索(Dagfinn Reiersφl) , 贝克(Marcus Baker) , 史夫利特(Chris Shiflett)

    涵盖了单元测试、重构、用户交互、MVC模式、输入验证、表单处理、数据库连接和查询。以及抽象的持久性对象等内容。通过研读《PHP实战》,读者将对PHP有更深层、更透彻的理解。可以借鉴先进的面向对象实践。极大地...

    ASP.NET MVC in Action

    除了ASP.NET MVC框架本身,作者还介绍了Onion Architecture、领域驱动设计(DDD)、测试驱动开发(TDD)、控制反转(IoC)以及其它一些真实项目中经常用到的类库(和技术)。 本书章节如下: ASP.NET MVC框架入门 ...

    NHibernate in Action by Christian Bauer

    我们通过示例代码介绍如何实现一些诸如分层系统,单元测试这样的常用应用。同时也包括一些如何找bug的小技巧。同时我们还提供了添加像审核日志这样的自定义服务到NHibernate应用中的例子。 第九章开始讨论开发的...

    QTP常用技巧应用与代码实践

    QTP常用技巧应用 1、QTP的Action间的信息共享的4种方 2、TD与QTP连接 3、QTP读取Excel数据的方法 4、QTP连接数据库 5、QuickTest Plus小工具,大作用 6、基础知识 7、对象库和对象属性 ...17、向测试结果报告事件

Global site tag (gtag.js) - Google Analytics