高分求助:请问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"了
}
}