SpringFramework4系列之SpringTest:(二)MockJNDI

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);
时间: 2024-10-11 13:45:00

SpringFramework4系列之SpringTest:(二)MockJNDI的相关文章

SpringFramework4系列之SpringTest:(一)Spring4整合Junit

构建Spring 应用之后呢,编写单元测试就显得比较麻烦了,因为绝大部分的类都交给了spring托管了,需要人为的去加载spring的配置文件等等,或者需要编码去从spring 哪里得到某个类的实例等. 1.1 整合SpringTest之前的单元测试编码 public class TestDemo {     private static DBDao dbDao;     private Object[] testData;     @BeforeClass     public static 

SpringFramework4系列之SpringJMS:(四)异步接收消息 2.构建监听器

构建实现接口的监听器 编写监听器类并且实现监听器接口 public class ListenerDemo implements MessageListener {     public void onMessage(Message message) {         System.out.println(message.toString());     } } 注册MDP <!-- this is the Message Driven POJO (MDP) --> <bean id=&

javascript系列之DOM(二)

原生DOM扩展 我们接着第一部分来说,上文提到了两种常规的DOM操作:创建文档片段和遍历元素节点.我们知道那些雨后春笋般的库,有很大一部分工作就是提供了一些优秀 的DOM操作API.可见原生的一些方法和属性,还不能很灵活快捷的来完成我们所希望的操作.下面将总结出总结出几种很实用的扩展方法.包括 after()和before(), A:after()和before() 1 function after(elem){ 2 if(this.parentNode){ 3 this.parentNode.

Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)

这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己Repository(Nexus) Maven提高篇系列之(四)——使用Profile Maven提高篇系列之(五)——处理依赖冲突 Maven提高篇系列之(六)——编写自己的Plugin(本系列完) 持续交付要“自动化所有东西”,对于集成测试也是一样.集成

【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合

[Cocos Creator ](千人群):  432818031 上一篇,介绍了Himi在使用过cc所有组件后的一篇总结,没有具体介绍每个组件的原因在于官方文档很齐全,而且也有视频的介绍. 所以希望童鞋们可以把我这两篇博文当成对组件.脚本两部分开发的整理与总结. 后续的文章,Himi应该主要更新一些官方还未补充或者还没有的教程.避免无用功. 下面直接放出代码,因为不是很难理解.所以不再一一赘述,都是常用的函数.事件监听.动作回调.定时器等开发过程中必接触的. 大致内容如下: cc 属性介绍 获

【REACT NATIVE 系列教程之二】创建自定义组件&&导入与使用示例

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2219.html 在上一篇  [REACT NATIVE 系列教程之一]触摸事件的两种形式与四种TOUCHABLE组件详解 中的最后介绍了如何使用Touchable的四种组件进行监听触摸事件.  那么紧接着我们利用Touchable来包装一个带图片的Button组件,且设计成可接受很多自定义参数. 一:创建我们自定义

C++语言笔记系列之十二——C++的继承

C++的继承 1.继承方式 public(公有继承) 派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员. 派生类的对象只能访问基类的public成员. protected(保护继承),private(私有继承) 派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员. 派生类的对象不能访问基类的任何成员. 2.例子 example 1: #include <iostream.h> clas

屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作

此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网远程连接法 查看\创建\使用\删除\清空\修改 数据库表(是否可空,默认值,主键,自增,外键) 表内容的增删改查 where条件.通配符_%.限制limit.排序desc\asc.连表join.组合union 查

SpringMVC系列之(二) springMVC和Struts异同

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架.通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术.Velocity.Tiles.iText 和POI.Sp