用户操作
[即时聊天] [发私信] [加为好友]
纯月ID:danny_xcz
874659次访问,排名41,好友2人,关注者159人。
danny_xcz的文章
原创 298 篇
翻译 3 篇
转载 25 篇
评论 650 篇
纯月的公告
最近评论
jarodpku:这个例子真是fdsafdsa,竟然用f(n)=f(n-1)+f(n-2)这样的递归公式来举例,重复计算太多,多核的效率根本无法体现。

还不如用优化的串行程序来得快。
fyt2008:学习了
zhkzhk:楼主,好东西哦,我已经学习了..
tingnt:学习一下
tingnt:学习一下
文章分类
收藏
    相册
    Blog用途
    我的相册
    Java Desktop
    Open Source
    友情链接
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 在单元测试中使用EasyMock收藏

    新一篇: 回应拐拐龙底咚兄弟关于ROR,PHP,Web应用开发 | 旧一篇: 试用Google的picasa web

    我们每天的开发中都要编写大量的单元测试,很多单元测试的对象是相对独立的,例如一个所得税计算的模块,但是更多的单元测试需要依赖其他的组件或者服务。因此,我们需要EasyMock来无缝的连接这些组件。Mock的意思就是空的,不存在的东西。

    EasyMock刚刚发布了2.2版本,它开始使用很多基于jdk 1.5的特性。

    下面我们举一个例子:

    假设定义一个如下的接口:

    public interface ISimpsonService {
        IEpisode getEpisode(int number);
    }

    public interface IEpisode {
        int getNumber();
       String getTitle();
       InputStream getDataAsStream();
    }

    该接口的实现为

    public class ClientSimpsonService implements ISimpsonService {
        private ISimpsonService remoteSimpsonService;
        public ClientSimpsonService(ISimpsonService remoteSimpsonService) {
            this.remoteSimpsonService = remoteSimpsonService;
        }
        public IEpisode getEpisode(int episodeNumber) {
            return null;
        }
    }
    对该服务的单元测试如下
    public class ClientSimpsonServiceTest extends TestCase {
        public void testClientSimpsonService() {
            try {
                new ClientSimpsonService(null);
                fail("Expected IllegalArgumentException");
            } catch (IllegalArgumentException e) {
                // expected
            }
        }
    我们可以看到因为没有remoteSimpsonService,所以我们只传一个null给ClientSimpsonService,
    这样是无法完成测试的。所以我们把还没有写的remoteSimpsonService用mock替代。
    import static org.easymock.EasyMock.createMock;
    import junit.framework.TestCase;
    public class ClientSimpsonServiceTest extends TestCase {
        private ISimpsonService remoteSimpsonServiceMock;
        protected void setUp() throws Exception {
            super.setUp();
            remoteSimpsonServiceMock =
                createMock(ISimpsonService.class);
        }
        public void testClientSimpsonService() {
            try {
                new ClientSimpsonService(null);
                fail("Expected IllegalArgumentException");
            } catch (IllegalArgumentException e) {
                // expected
            }
            new ClientSimpsonService(remoteSimpsonServiceMock);
        }
    }
    上面的黑体代码中,我们创建了一个ISimpsonService.class的mock,它拥有和ISimpsonService一样
    接口。
    同样的方法,我们可以定义ISimpsonService返回的对象IEpisode
    import static org.easymock.EasyMock.createMock;
    import static org.easymock.EasyMock.expect;
    import static org.easymock.EasyMock.replay;
    import static org.easymock.EasyMock.verify;
    import junit.framework.TestCase;
    public class ClientSimpsonServiceTest extends TestCase {
        private IEpisode episode17Mock;
        private ISimpsonService remoteSimpsonServiceMock;
        protected void setUp() throws Exception {
            super.setUp();
            episode17Mock = createMock(IEpisode.class);
            remoteSimpsonServiceMock =
                createMock(ISimpsonService.class);
        }
    ...
        public void testGetEpisode() throws Exception {
            expect(remoteSimpsonServiceMock.getEpisode(17))
                .andReturn(episode17Mock);
            replay(remoteSimpsonServiceMock);
            ISimpsonService clientSimpsonService = 
                new ClientSimpsonService(remoteSimpsonServiceMock);
            IEpisode result = clientSimpsonService.getEpisode(17);
            verify(remoteSimpsonServiceMock);
            assertEquals(episode17Mock, result);
        }
    上文仅仅是抛砖引玉,想了解更多EasyMock,请参看
    http://today.java.net/pub/a/today/2006/06/20/getting-started-with-easymock-2.html

    发表于 @ 2006年06月21日 08:22:00|评论(loading...)|编辑

    新一篇: 回应拐拐龙底咚兄弟关于ROR,PHP,Web应用开发 | 旧一篇: 试用Google的picasa web

    评论

    #ykdsg 发表于2007-12-13 15:24:12  IP: 122.224.130.*
    麻烦以后代码写得有层次些,这样看着太累了
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 纯月