网站后端一般从下往上有Entity层(对应DB table) —> Dao层(对应DB table增删改查各种操作)—> Service层(业务逻辑层,调用dao层和DB打交道) —> Controller层(对应各种http api,调用service)。
前后端分离开发的话,后端必须做到充分的自测,才能保证前后端联调时不出大问题。如果Dao层使用JPA的话,其实不需要测试,除非用错了。那么,针对entity层和service/controller层,后端开发时怎么自测一直是个问题萦绕在我心头。
目前这个问题的一半找到了答案,可以使用Hibernate Session对entity类进行测试。如果entity类的字段定义或者注解不合理的话,增删改查操作会报错,那么上层的service/controller也就会出错。所以entity层的测试其实十分必要。在测试过程中,将hibernate配置成打印sql语句,并且在实际unit test的catch子句里打印stack trace十分实用,能快速定位问题。
步骤总结如下,供日后参考:
- 首先在src/main/resource下增加配置文件hibernate.cfg.xml,配置数据库driver,dialect,数据库连接url,用户名,密码等等,记得把需要测试的entity类配置到mapping节点里,class=“完整包名.entity类名”
有时候为了省事儿,也可以不配置这个文件,直接在HibernaterUtil类里,创建SessionFactory实例时把各项配置塞进去。下一步代码里会有示例。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hiber