使用Spring4.0+Hibernate4.3.0做项目,想用Unitils作为测试框架。由于项目采用Maven管理,所以在项目的POM文件下添加了Unitils的dependence。但是当我将应用部署到服务器上,出现了一个NoSuchMethod的错误:
java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session;
at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.openSession(OpenSessionInViewFilter.java:203)
at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:138)......
经过排查,发现是Unitils采用了hibernate-3.2.5.ga的jar,这显然和我的hibernate版本冲突,删除Unitils的依赖以后从新部署项目问题解决。
Unitils的官方最新版本是3.3,对应的发布时间是2011年12月22号。所以显然它不能支持Hibernate4了,另外就是Spring4估计也不是完美支持,可惜了一个很好的测试框架,没人继续维护了,唉。
只好采用Spring test来做啦。