运行单元测试后,数据不会从中删除 数据库中。
我遇到AOP配置或弹簧问题。 我编写了一个单元测试,扩展了AbstractTransactionalDataSourceSpringContextTests类。 对于AOP配置,我已经对将要测试的方法进行了切入点,我已经将这个建议提供给了切入点:
<tx:advice id="newTxAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRES_NEW" />
</tx:attributes>
</tx:advice>
请告诉我为什么数据没有被删除,任何帮助都会很明显。 感谢。
答案 0 :(得分:0)
REQUIRES_NEW
传播属性的事务与任何其他更广泛的事务无关。AbstractTransactionalDataSourceSpringContextTests
,作为AbstractTransactionalSpringContextTests
,不会删除内容,但实际上会回滚测试范围的事务。因此,在您的情况下,您的transactionManager很可能在测试内容时提交新事务,因此当您的外部tx被回滚时(通过
AbstractTransactionalDataSourceSpringContextTests
),为时已晚:数据已经提交。
要做你想做的事,只需使用默认的REQUIRED
传播。我甚至建议不要一般使用REQUIRES_NEW
,除非你有一个特殊用例和异常处理问题。