Unit testing Spring AbstractTransactionalDataSourceSpringContextTests-在测试方法后不回滚数据

Unit testing Spring AbstractTransactionalDataSourceSpringContextTests-在测试方法后不回滚数据,unit-testing,jakarta-ee,aop,spring-aop,Unit Testing,Jakarta Ee,Aop,Spring Aop,运行单元测试后,不会从中删除数据 数据库 我对AOP配置或spring都有问题。 我已经编写了一个单元测试来扩展类AbstractTransactionalDataSourceSpringContextTests。 对于AOP配置,我对将要测试的方法做了一个切入点,我对切入点给出了以下建议: <tx:advice id="newTxAdvice" transaction-manager="transactionManager"> <tx:attributes>

运行单元测试后,不会从中删除数据 数据库

我对AOP配置或spring都有问题。 我已经编写了一个单元测试来扩展类AbstractTransactionalDataSourceSpringContextTests。 对于AOP配置,我对将要测试的方法做了一个切入点,我对切入点给出了以下建议:

<tx:advice id="newTxAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="*" propagation="REQUIRES_NEW" />
    </tx:attributes>
</tx:advice>

请告诉我为什么数据没有被删除,任何帮助都是值得的。 谢谢。

  • 如前所述,具有
    REQUIRES_NEW
    传播属性的事务与任何其他范围更广的事务无关
  • AbstractTransactionalDataSourceSpringContextTests
    ,作为
    AbstractTransactionalSpringContextTests
    ,不会删除内容,但实际上会回滚测试范围内的事务
因此,在您的情况下,您的transactionManager很可能在您测试东西时提交新事务,因此当您的外部tx被回滚时(由
AbstractTransactionalDataSourceSpringContextTests
),太晚了:数据已经提交


要执行所需操作,只需使用默认的
REQUIRED
propagation。我甚至建议一般不要使用
REQUIRES\u NEW
,除非您有异常处理问题的特定用例。

您是如何编写数据访问代码的?您使用的是JDBC、Hibernate还是其他方法?