这两天看陈雄华的书《Spring3.0企业开发实战》17章做dao层的测试,由于使用postgreSql数据库,所以遇到了不少错误,很多问题百度都没找到答案,所以记录下来给遇到同样错误的童鞋做个参考。下面是我遇到的问题:
1、unitils目前还不支持Hibernate4,所以使用hibernate4的童鞋,要么换hibernate3要么自己用dbUnit做测试。
2、org.unitils.core.UnitilsException: Missing configuration for org.unitils.core.dbsupport.DbSupport.implClassName这个问题使用mySql数据库的话不会出现,可是使用postgreSql或者hdbsql的话就会出现这个问题。百度的英文搜索能力太差,靠他根本不行,还是google吧。谷歌后发现有的说是在unitils-local.properties里面加上两句话:
+org.unitils.core.dbsupport.DbSupport.implClassName.postgresql=org.unitils.core.dbsupport.PostgreSqlDbSupport-+org.dbunit.dataset.datatype.IDataTypeFactory.implClassName.postgresql=org.dbunit.dataset.datatype.DefaultDataTypeFactory
加上这两句话后发现还是有这个错误,后来仔细一想:错误提示的是没有配置implClassName而我这里加的是implClassName.postgresql会不会是把postgreSQL去掉呢,去掉后果然好了:
+org.unitils.core.dbsupport.DbSupport.implClassName=org.unitils.core.dbsupport.PostgreSqlDbSupport-+org.dbunit.dataset.datatype.IDataTypeFactory.implClassName=org.dbunit.dataset.datatype.DefaultDataTypeFactory
这个问题就是这样解决的。
3、使用xls表进行测试时,用两个xls表,一个是测试数据,一个是期待数据,一开始不知为什么总是绿条,可是这两个xls的数据明明不同,后来偶然间改了一下,发现竟然跟hibernate.hbm2ddl.auto这个属性相关,我原来使用的是update,改为create后,正常了。当两个表中的数据不一样时,它会提示错误,并指明那一条数据。