日期:2014-05-20  浏览次数:20741 次

高分求助:请问Spring做单元测试的时候如果通过mock虚拟jndi数据源呢?
<!-- 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呢?
哪位大哥给指点下吧

------解决方案--------------------
给你个例子吧
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"了
}
}