如何在运行集成测试后删除非事务性数据库日志记录?

时间:2015-06-24 10:39:17

标签: java spring logging transactions spring-transactions

我正在开发一个Java / Spring应用程序,它需要将审计日志写入数据库。所有服务当前都标记为@Transactional - 因此如果发生故障,则会回滚更改。

但是审计日志记录是例外 - 它应该总是成功 - 所以一直在考虑将AuditLogService标记为Propagation.NOT_SUPPORTEDPropagation.REQUIRES_NEW

问题是如何制作集成测试。理想情况下,这些不应该在数据库中留下日志条目。不希望在测试结束时手动删除它。是否有一种方法可以将测试标记为事务性,包括所有事务,包括通过Propagation.REQUIRES_NEW启动的事务?

1 个答案:

答案 0 :(得分:0)

我最终完成了我所说的我不想做的事情,并在每次测试结束时删除所有操作数据。 (这实际上效果更好,因为测试不再在一个总体事务中运行,这掩盖了一些错误,例如与Hibernate延迟加载有关。)