网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.前车之覆,后车之鉴 --开源项目经.
.使用正则表达式.
.学习Struts提供的和Form相关的标.
.J2ME程序开发新手入门九大要点.
.从重构的角度学习bridge设计模式.
.Eclipse 插件EclipseShell&.
.如何学好J2ME.
.自动转向的javabean源码.
.Spring入门指引之获取Spring框架.
.JDK6.0的新特性:使用Compiler API.
.爪哇语言工厂方法创立性模式介绍.
.企业级应用中开发 J2EE 应用的黄.
.Good Java Style: Part 1.
.J2ME小Tip:setClip方法的使用详.
.Java开发中使用Oracle一点注意事.
.处理Java程序中的内存漏洞.
.java版本的冒泡算法.
.精通ejb【四】.
.Java中异常机制的研究.
.学习Jakarta Struts 1.1 (二).

工欲善其事,必先利其器之easymock篇

发表日期:2008-1-5


 在做项目的时候,经常看见很多兄弟们在做一些无用功,其实,现在Java语言已经形成了一个形形色色的生态圈,在这个生态圈里,有IT巨鳄的IBM,有两头受气的Sun,还有各种各样为我们提供工具的开源社区,如Apache,eclipse,freshmeat,sourceforge,netbeans等。此外,J2SE 5.0推出以后也为我们节省了不少工作。我们完全可以利用这些资源,节省很多为老板干活的时间,从而将有限的生命投入到无限的泡MM事业中去。
 
  闲言少叙,dingdang预备写个系列文章,讲述一些工具,API以及其背后的原理。兄弟抛块砖先,有玉的尽管砸过来,我闪
 
一,测试工具EasyMock
 
   在这个系列文章中以测试开始,把它作为我们这篇入门介绍文档的开头,不是偶然的,正如村上春树在《挪威的森林》里面说的那样,死并不是生的对立面,而是作为生的一部分而存在。测试也不是开发的对立面,而是作为开发的一部分而存在,我们总是在不断的写代码,单元测试,写代码,单元测试......作为单元测试的工具JUnit框架大家可能已经耳熟能详,Martin Fowler对它的评价是"Never in the field of software development was so mUCh owed by so many to so few lines of code"。一时AUnit,BUnit,仿效者无数。可谓武林至尊
   可是,仅仅JUnit是不够的。我们在做项目的时候就碰到了这样的场景:
  
  大米:终于写完代码了,可以上QQ泡MM了.....
  dingdang:哦,写完了,给个测试用例先。
  大米:没法子给测试用例啊,我写的这个类要用到苞谷写的类耶
  dingdang去找苞谷:苞谷,你的代码怎么还没写完啊,搞的大米连单元测试都做不了。
  苞谷:不是我得错,苹果没有写完我需要的类
  苹果:也不是我得错,大米没有写完我需要的类
  dingdang:×※……%¥
 
  其实,这些类的依靠关系首先是违反了一个原则:The Dependency Inversion Principle(依靠转置原则)
  抽象不应该依靠于细节,而细节应该依靠于抽象。
  高层的模块不应该依靠于底层的模块,它们都应该依靠于抽象
  通俗一点的说,就是,我们在做Java设计的时候,应该尽可能的依靠于接口而不是实现。
  dingdang嘿嘿奸笑两声:大米啊,我们修改一下设计吧,把我们的设计refactoring一下。
  三分钟后,大米说:dingdang啊,改成接口还是没法子测试啊。
  dingdang再次狂笑:哈哈,倚天不出,谁与争锋,看我的easymock!!!!!
 
      easymock软件安装很简单,先到以下地址下载一个最新的zip包: www.easymock.org,下载完以后将easymock.jar包加到你的系统的CLASSPATH环境变量中,对于IDE环境,对于需要用到的junit的项目增加到lib中,不同的IDE有不同的设置,这里不多讲。
      easymock的优点在于模拟接口的行为,(新版的easymock利用cglib据说也可以模拟类的行为,没有试用过:P)假如你有一个类HelloWorld,依靠接口DependentInterface,easymock就可以在运行的时候生成DependentInterface接口的实现。这些实现的行为和返回值都可以在单元测试代码里面指定。我们用一个JUnit例子来进行说明
     首先,需要导入MockControl类,如下样例中的第一步,
     然后选择一个接口,创建这个接口的模拟实例,如以下样例中的第二步。
     最后,先模拟一下你希望的类的行为,如返回值等,调用MockControl类的replay方法:
   
     import junit.framework.*;
     import org.easymock.MockControl;// step 1
     interface DependentInterface{
        public String sayHello();
     }
    class HelloWorld{
         private DependentInterface dp_;
         public HelloWorld(DependentInterface dp){
           dp_ = dp;
       }
       public String sayAnotherHello(){
           return dp_.sayHello();
        }
    }
    public class TestHelloWorld extends TestCase {
        private HelloWorld helloWorld_ = null;
        private MockControl control_;
        private DependentInterface dp_;
        protected void setUp() throws Exception {
            super.setUp();
            control_ = MockControl.createControl(DependentInterface.class);//step 2
            dp_ =(DependentInterface)control_.getMock();//step 2
            helloWorld_ = new HelloWorld(dp_);
         }
       protected void tearDown() throws Exception {
            helloWorld_ = null;
            super.tearDown();
         } 
      public void testSayHello() {
          dp_.sayHello();//step 3
          control_.setReturnValue("hello");//step 3
          control_.replay();//step 3
          String actualReturn = helloWorld_.sayAnotherHello();
           assertEquals(actualReturn,"hello");
       
        }
     }


上一篇:对Applet进行数字签名 人气:537
下一篇:Sun对Java语言安全性与功能做出重大改进 人气:727
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐