后通过查看源代码发现,CustomDbUnitTestExecutionListener会先于TransactionalTestExecutionListener执行,而前者在执行完毕关闭了数据库连接,后者在回滚时,发生了连接不存在的异常。

  解决方法很简单,修改CustomTransactionalDbUnitTestExecutionListener:

private static final Class<?>[] CHAIN = {CustomDbUnitTestExecutionListener.class, TransactionalTestExecutionListener.class};

  也是数组两个元素调换下位置。