用junit测试spring时,加载dataSource出错

zebinfang 2008-04-03 10:12:16
1,bean-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">


<beans>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/fundmonitor"></property>
</bean>
<beans>
2,测试代码
package com.prhc.fundmonitor.dao.testCase;

import junit.framework.TestCase;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.prhc.fundmonitor.dao.log.LogDao;

public class LogDaoImplTest extends TestCase {

private LogDao logDao;

ApplicationContext context;
protected void setUp() {
context = new ClassPathXmlApplicationContext(
"file:WebRoot\\WEB-INF\\spring\\bean-dao.xml");
}

protected void tearDown() {

}

private LogDao getLogDao() {
if (logDao == null)
// userDao = (UserDao) context.getBean("userDao");
logDao = (LogDao) context.getBean("logDao");
return logDao;
}

@Test
public void testGetNewID() {
int result;
int expect = 69544;
try {
result = getLogDao().getNewID();
this.assertEquals(result, expect);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
3,出错信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL [file:WebRoot/WEB-INF/spring/bean-dao.xml]: Initialization of bean failed; nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial

麻烦各位资深人士。
本人送出所有的分。谢谢!!!
...全文
1163 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjguodong 2012-08-17
  • 打赏
  • 举报
回复
楼主,这个配置要怎么改啊!
紧急求助!!!
jx308 2011-08-20
  • 打赏
  • 举报
回复
spring的配置文件怎么改就好了啊?最后说的怎么那么含糊
JLycxygdrz 2009-03-20
  • 打赏
  • 举报
回复
spring的配置文件怎么改就好了啊?最后说的怎么那么含糊
宋玮-深圳 2008-04-04
  • 打赏
  • 举报
回复
2楼的搞错了,继承什么都可以,关键是你的ds使用了JNDI,不起服务器就没有这个JNDI,需要用spring-mock一个JNDI
zebinfang 2008-04-04
  • 打赏
  • 举报
回复
3楼说得对,也很感谢2楼,问题解决了,原因是服务器(比如tomcat)启动时,它有自己的容器加载JNDI,而在junit里,没有这个JNDI,改了spring的配置文件就行了,谢谢两位,接分!!
zebinfang 2008-04-03
  • 打赏
  • 举报
回复
public class LogDaoImplTest extends AbstractTransactionalSpringContextTests {

private LogDao logDao;

ApplicationContext context;

ApplicationContext ctx;

@Override
protected String[] getConfigLocations()

{
String[] config = null;
try {
config = new String[] { "file:WebRoot\\WEB-INF\\spring\\bean-dao.xml" };

} catch (Exception ex) {
ex.printStackTrace();
}
return config;
}
.....
}
我改成这样了,还是同样的错误,请各位帮忙,谢谢!!
fountian 2008-04-03
  • 打赏
  • 举报
回复
不能 继承TestCase ,要集成XXXXTestCase,具体我也忘了。

67,538

社区成员

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

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