Junit 测试 Spring 遇到的问题

其实网上已经有很多人写过关于 Junit 测试 Spring的文章了,而我也是根据他们的介绍的配置来进行配置。可是途中遇到些问题,而网上都没有关于这部分的介绍,可能是我比较小白,大部分人都没有遇到过这种情况,但为了那些与我一样小白的 程序猿 ,我把这个小配置写出来与大家分享。


以上纯属废话,请勿观看.......

import javax.annotation.Resource;  
  
import org.junit.Test;  
import org.junit.runner.RunWith;  
import org.springframework.test.context.ContextConfiguration;  
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
  
import com.core.permission.dao.IUserDao;  
import com.core.permission.po.User;  
  
//@RunWith(SpringJUnit4ClassRunner.class)用来声明在Spring环境下进行测试  
//@ContextConfiguration(locations={……})用来声明配置文件,把项目中所有的关于ssh的配置文件都声明到里面  
//(其实只需要声明与你测试相关的即可,为了以后对于action的测试,所以把所有的配置文件都加了进来)  
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations={"classpath:com/core/config/hibernate.cfg.xml",  
        "classpath:com/core/config/springConfig-core.xml",  
        "classpath:com/core/config/springConfig-dao.xml",  
        "classpath:com/core/config/springConfig-struts.xml",  
        "classpath:com/core/config/springConfig.xml",  
        "classpath:com/core/config/strutsConfig.xml"})  
//类名也有限制,要是bean中注入的类的名字  
public class userDao {  
    //@Resource(name="userDao")代表根据名称来查找配置文件,userDao即为配置文件中的名称  
    @Resource(name="userDao")  
    private IUserDao<Long, User> userDao;  
      
    //@Test注解代表测试用例默认的测试方法,启动时默认执行该方法  
    @Test  
    public void userTest() {  
        User u = userDao.findUserAll().get(0);  
        System.out.println("用户的id=" + u.getId());  
    }  
}





上面的代码片段是引用 这篇博文的,讲的也很仔细,对于配置不懂的小白们,值得一看,我这里就不做赘述


点击打开链接


哦对,再多说下,上面TestCase 中的配置文件是放在了 src(classes)路径下的,如果你的配置文件在 WEB-INF 下的话,就要做些更改


@ContextConfiguration(locations={
	"file:WebRoot/WEB-INF/config/hibernate.cfg.xml",  
        "file:WebRoot/WEB-INF/config/springConfig-core.xml",  
        "file:WebRoot/WEB-INF/config/springConfig-dao.xml",  
        "file:WebRoot/WEB-INF/config/springConfig-struts.xml",  
        "file:WebRoot/WEB-INF/config/springConfig.xml",  
        "file:WebRoot/WEB-INF/config/strutsConfig.xml"})  





OK,开始进入正题:


我遇到的情况就是 我在Spring的配置文件中,使用到了 Properties。


<bean id="propertyConfigurer" class="com.canco.hibernate.util.CancoConnection">
	<property name="locations">
		<list>
			<value>/WEB-INF/test.properties</value>
		</list>
	</property>
</bean>




这个时候问题就出现了 ,我运行已经配置完成的 TestCase ,它报错:
Caused by: org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/test.properties] cannot be opened because it does not exist




这时我就纠结了,由于 Spring的配置依赖 test.properties 但是 Junit 在加载路径时 貌似使用的是相对路径(我猜的,不知道是不是) , 可是我在Spring中的确是使用根路径啊


OK,公布结果,最后的解决方法是类似于上面的 Annotation



<bean id="propertyConfigurer" class="com.canco.hibernate.util.CancoConnection">
	<property name="locations">
		<list>
			<value>file:WebRoot/WEB-INF/canco.properties</value>
		</list>
	</property>
</bean>





好了,现在再次运行就没有问题了,Properties可以正常的加载到。 继续闲扯.....小弟第一次写博文,一直对于那些共享自己遇到的Bug,怎么解决Bug的Bloger 怀有无限的感激之心,以后我个人也会针对自己遇到、解决的一些难缠Bug写出文章,让那些和我一样小白的同志们不再纠结。  

个人技术有限,大牛路过勿笑~微笑





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值