无花的空间--http://wuhua.3geye.net-- 您今天UCWEB了吗?--http://www.ucweb.com

当你来到我的空间的时候,你会看到很多Google,Nokia,Mobile,J2ME ,Android,3G,无线开发,手机软件,手机软件开发等与Google,手机相关的文章,你千万不要惊讶。这就是我一个专注Google,无线开发的无花。传播知识,分享经验,技术交流是我开空间的直接目的。当然如果有项目开发,我还是很希望赚点外快的。

用户操作
[即时聊天] [发私信] [加为好友]
无花ID:gooogledev
40541次访问,排名2971,好友20人,关注者24人。
J2EE 2年的开发时间,
J2ME 2年的开发时间
gooogledev的文章
原创 80 篇
翻译 0 篇
转载 3 篇
评论 201 篇
无花的公告

人要吃很多苦才可以长大!

踏实平凡人应该遵守的原则!

与我TM

gooogledev@gmail.com

友情链接

我的j2me创意

Wap浏览器的源代码

用自己写的rms引擎写的电话本

RSS订阅此博客  
用抓虾订阅此博客
用google订阅此博客
用bloglines订阅此博客
    网络封神榜 | 饶荣庆
最近评论
22:main()在哪个.java中
ant-shopping:I support author's viewpoint, hoped that will have later also more better articles,
abercrombie fitch handbag
ptsell:I support author's viewpoint, hoped that will have later also more better articles,
Balenciaga Bags
真的假的,屁股上的痣也能拍出来?
leo2012:奇怪,怎么下的wap explorer不能访问wap站点
文章分类
收藏
    相册
    j2me创意图片
    j2me教程
    我的照片
    我的链接
    3G视线
    EasyMF J2ME框架
    Lucene中国
    我的Google
    无花的博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创  单元测试之实践四 Action的测试收藏

    新一篇: 自动注册gmail邮箱构想 | 旧一篇: 单元测试之实践三 Service的测试

     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. public void setAccountService(IAccountService accountService) {
    7. this.accountService = accountService;
    8. }

    9. public String regist() throws Exception {
    10. if(account == null) {
    11. account = new Account();
    12. return INPUT;
    13. }

    14. if(!validForm(account))
    15. return INPUT;

    16. try {
    17. accountService.regist(account);
    18. } catch (ObjectExistsException e) {
    19. e.printStackTrace();
    20. return INPUT;
    21. }

    22. return SUCCESS;
    23. }

    24. private boolean validForm(Account e) {
    25. if(e.getName() == null || e.getName().trim().equals(""))
    26. return false;
    27. if(e.getPassword() == null || e.getPassword().trim().equals(""))
    28. return false;
    29. return true;
    30. }

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

    2. import junit.framework.TestCase;

    3. import org.easymock.MockControl;
    4. import org.wuhua.exception.ObjectExistsException;
    5. import org.wuhua.model.Account;
    6. import org.wuhua.service.IAccountService;

    7. import sms.king.AccountManager;

    8. import com.opensymphony.xwork.Action;

    9. public class AccountActionTest extends TestCase {
    10. private MockControl control;
    11. IAccountService accountService;
    12. protected void setUp() throws Exception {
    13. control = MockControl.createControl(IAccountService.class);
    14. accountService = (IAccountService) control.getMock();

    15. }

    16. public void testRegistOk() throws Exception {
    17. Account employee = new Account("name");
    18. employee.setPassword("password");




    19. accountService.regist(employee);
    20. control.setVoidCallable(1);

    21. control.replay();

    22. AccountAction action = new AccountAction();
    23. action.setAccount(employee);
    24. action.setAccountService(accountService);

    25. assertEquals(Action.SUCCESS, action.regist());

    26. control.verify();
    27. }

    28. public void testRegistNameExists() throws Exception {
    29. Account employee = new Account("name");
    30. employee.setPassword("password");




    31. accountService.regist(employee);
    32. control.setThrowable(new ObjectExistsException(""));

    33. control.replay();

    34. AccountAction action = new AccountAction();
    35. action.setAccount(employee);
    36. action.setAccountService(accountService);

    37. assertEquals(Action.INPUT, action.regist());

    38. control.verify();
    39. }
    40. }

    ok,一个测试的例子就好了。
     

    发表于 @ 2007年04月03日 16:19:00|评论(loading...)|编辑

    新一篇: 自动注册gmail邮箱构想 | 旧一篇: 单元测试之实践三 Service的测试

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 无花