查了一下,原来是hibernate.cfg.xml文件中有个机关
<hibernate-configuration>
<session-factory name="my">
....
</session-factory>
</hibernate-configuration>
当设置了session-factory元素的name属性时,hibernate会把session-factory注册到jndi中,因为我们单元测试是脱离web容器的,因此这个时候就报错了,只要把session-factory 的name属性删除就行了。