高分求助:请问Spring做单元测试的时候如果通过mock虚拟jndi数据源呢?

Logson 2009-01-06 03:04:58
<!-- Jndi配置数据源 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/cpf/cr</value>
</property>
</bean>
因为是必须依赖与应用服务器的,所以单元测试不能获得dataSource,我知道改为jdbc连接配置可以解决这个问题,但是如何通过spirng-mock来虚拟一个jndi呢?
哪位大哥给指点下吧
...全文
275 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyf_sust 2009-02-27
  • 打赏
  • 举报
回复
收藏了。
Logson 2009-02-06
  • 打赏
  • 举报
回复
过年回来顶一下
jinhuiyu 2009-01-10
  • 打赏
  • 举报
回复
给你个例子吧
import javax.sql.DataSource;

import junit.framework.TestCase;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.mock.jndi.SimpleNamingContextBuilder;

public class JndiTest extends TestCase {

private static String[] springFiles = { "beans/my-beans-config.xml" };

private ClassPathXmlApplicationContext context;

public void testJndi( ) throws Exception {

context = new ClassPathXmlApplicationContext(springFiles);

SimpleNamingContextBuilder builder =

SimpleNamingContextBuilder.emptyActivatedContextBuilder();

DataSource ds = (DataSource) context.getBean("dataSource");

builder.bind("jndi:jdbc/DataSource", ds);

// 现在你的数据源就是 "jndi:jdbc/DataSource"了
}
}
Logson 2009-01-10
  • 打赏
  • 举报
回复
楼上的说例子好像反了,
我的意思是在配置文件里面采用的是jndi数据源,需要在测试中在spring实例化Ds之前就通过mock把这个jndi虚拟出来
而楼上的意思是在配置文件里面是jdbc的Ds,spring实例了ds之后用mock给虚拟成jndi的了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧