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,一个测试的例子就好了。
分享到:
相关推荐
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...
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脚本语言基础 VU-用户行为的模拟器 ........VU ........录制脚本 ........关联 .........
本书主要介绍在Java软件开发中使用JUnit进行测试的原则、技巧与实践,深入阐述如何编写自动测试。把一段代码隔离开来测试有什么好处,如何判断何时需进行整合测试......
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 ...
主要介绍了在Java软件开发中使用JUnit进行测试的原则、技巧与实践,深入阐述如何编写自动测试,把一段代码隔离开来测试有什么好处,如何判断何时需要进行整合测试,并对如何测试完整的J2EE应用进行了极具价值的讨论...
《Spring 实战(第4版)》是经典的、畅销的Spring学习和实践指南。 这一版针对Spring 4进行了全面更新。全书分为四部分。第一部分介绍Spring框架的核心知识。第二部分在此基础上介绍了如何使用Spring构建Web应用程序...
涵盖了单元测试、重构、用户交互、MVC模式、输入验证、表单处理、数据库连接和查询。以及抽象的持久性对象等内容。通过研读《PHP实战》,读者将对PHP有更深层、更透彻的理解。可以借鉴先进的面向对象实践。极大地...
除了ASP.NET MVC框架本身,作者还介绍了Onion Architecture、领域驱动设计(DDD)、测试驱动开发(TDD)、控制反转(IoC)以及其它一些真实项目中经常用到的类库(和技术)。 本书章节如下: ASP.NET MVC框架入门 ...
我们通过示例代码介绍如何实现一些诸如分层系统,单元测试这样的常用应用。同时也包括一些如何找bug的小技巧。同时我们还提供了添加像审核日志这样的自定义服务到NHibernate应用中的例子。 第九章开始讨论开发的...
QTP常用技巧应用 1、QTP的Action间的信息共享的4种方 2、TD与QTP连接 3、QTP读取Excel数据的方法 4、QTP连接数据库 5、QuickTest Plus小工具,大作用 6、基础知识 7、对象库和对象属性 ...17、向测试结果报告事件