码迷,mamicode.com
首页 > 编程语言 > 详细

SpringFramework4系列之SpringTest:(二)MockJNDI

时间:2015-07-13 16:23:16      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

     JNDI是J2EE 的标准之一,它依赖于容器, 比如说在开发测试阶段,datasource 或者jms 的factory 是通过JNDI所寻得的话,那么要测试的话,总是要部署到应用服务器上面 比如 TOmcat,weblogic或者Jboss等,并且 这些应用服务器必须设定好对应的JNDI,比如说我要把 某个datasource 绑定到 名为 appDS的JNDI上面,然后代码部分也是通过 context.looiup的方法取寻得这个命为appDS的对象,测试起来 相当麻烦。

   在做集成测试的时候,笔者认为,这些步骤是必须的,因为集成测试的时候是要涵盖各个组件之间能很好沟通工作,那如果是单元测试的话,也是这样做的话 就有点得不偿失的了,因为单元测试部分 指向测试 lookup这个部分的代码能工作啊,或者说 我只是要通过lookup拿到一个对象而已。

    在推出 spring test 之前, 笔者曾经用过 MockEJB ,easyMock这类的 类库 来做到模拟上下文,绑定一下测试需要的JNDI等。使用起来也是颇为方便。 而Spring Test 提供的 mock jndi部分则更为轻便和容易使用啦。


 Mock JNDI 只有三个类

我们可以看到 SpringTest 中 提供的 mock jndi 只有三个类, ExpectedLookupTemplate, SimpleNamingContext,SimpleNamingContextBuilder.

 技术分享

SimpleNamingContext 这个类就是Spring用来Mock JNDI的类,里面用2个hashmap来存放对象的

SimpleNamingContextBuilder 这个类呢是 SimpleNamingContext 的构建类,

ExpectedLookupTemplate


使用最多的是SimpleNamingContextBuilder 这个构建类。 使用这个类 来创建 修改 JNDI Context

技术分享


// creates an JNDI Context and combine resources
SimpleNamingContextBuilder builder = SimpleNamingContextBuilder.emptyActivatedContextBuilder();
builder.bind("appDS", db);


SpringFramework4系列之SpringTest:(二)MockJNDI

标签:

原文地址:http://my.oschina.net/u/1041012/blog/477938

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!