最近在做项目中用到了spring的junit,其实之前也用到过,只是这次有些特殊,所以成功后,记录一下!
先说一下我的环境:
myeclipse10.6+spring3.2.6+ehcache+proxool
这次与之前有大概两点不同:
1.以前我连接池用的是c3p0,dao层用的是mybatis.目前这个项目用的是proxool,springJDBC
2.以前配置文件一般放在Src下,这次文件放在了WEB-INF下面
基于以上两点我在调试junit时,遇到了点小麻烦.
第一个麻烦就是配置文件的读取.由于之前一直在src下,所以每次都是@ContextConfiguration(locations={"classpath:spring-dao-test.xml"}) 就可以了,但是这次配置文件放在了WEB-INF下面,所以读取文件的方式就要发生改变了,于是就换成了
@ContextConfiguration(locations = {"file:WebRoot/WEB-INF/application-context-junit.xml"})
这样,配置文件就读到了.
第二个麻烦就是连接池的事了.由于之前没有用过proxool,所以对它不了解,满以为读取到了spring配置文件就可以运行了,现实超出了我的预期
如下是proxool在spring中的配置
<!-- 配置proxool连接池 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="true">
<property name="driverClassName"
value="org.logicalcobwebs.proxool.ProxoolDriver" />
<property name="url" value="proxool.dbname" />
</bean>
运行后出现如下错误:
严重: Problem
org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'dbname'
后来我把配置改成了这个:
<!-- 配置proxool连接池 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="true">
<property name="driverClassName"
value="org.logicalcobwebs.proxool.ProxoolDriver" />
<property name="url" value="jdbc:mysql://192.168.1.12:3306/zxcms?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull" />
<property name="username" value="zxcms" />
<property name="password" value="zxcms"/>
</bean>
之后再运行,程序正常!
以上是我遇到的问题及解决方法,总结一下,也许以后还能用到!