文档章节

SpringFramework4系列之SpringTest:(二)MockJNDI

Garrry
 Garrry
发布于 2015/07/13 15:57
字数 433
阅读 211
收藏 7

     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);


© 著作权归作者所有

共有 人打赏支持
Garrry
粉丝 24
博文 46
码字总数 48703
作品 0
浦东
技术主管
私信 提问
SpringFramework4系列之SpringTest:(一)Spring4整合Junit

构建Spring 应用之后呢,编写单元测试就显得比较麻烦了,因为绝大部分的类都交给了spring托管了,需要人为的去加载spring的配置文件等等,或者需要编码去从spring 哪里得到某个类的实例等。 ...

Garrry
2015/07/13
0
0
SpringFramework4系列之SpringJMS:(四)异步接收消息 2.构建监听器

在Spring中,构建监听器 有三种方式: 实现监听器接口 适配器托管 注解监听器 其中,实现接口和注解监听器 都需要一个监听器容器的支持。 构建实现接口的监听器 编写监听器类并且实现监听器接...

Garrry
2015/07/07
0
2
Spring进行面向切面编程的一个简单例子

一、eclipse新建java项目取名SpringTest 二、导入sping包到构建路径 还需要aspectjweaver.jar 三、创建java类(当然先要创建各种包) IHelloService.java HelloServiceImpl.java SimpleHello...

wangxuwei
2016/01/04
3.7K
0
Spring+mybatis的一个简单例子

一、eclipse新建java项目取名SpringTest 二、导入sping,mybatis,jdbc(这里用postgresql)包到构建路径 三、在psql中建库、建表的脚本。 四、创建java类 student表对应的pojo对象 映射文件cn/...

wangxuwei
2016/01/09
744
0
SpringFramework4系列之SpringJMS:(四)异步接收消息 1.基本介绍

以往我们监听消息队列的时候,通常都是用EJB的MDB(Message-driven bean). 这需要EJB容器的支持。springframework4 对JMS的支持 使得我们使用常规的POJO就可以作为监听器 接收消息队列的信息...

Garrry
2015/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
5
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部