我想知道这是否可能。这是我的第一个问题,所以如果我不完全遵守协议,请耐心等待。我可以使用交易模板回滚我的交易。但是现在我要做的是将状态保存在标记为@before的方法中,然后将其回滚到@after方法中。

例如,这就是我以前的经历:

      _transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
     protected void doInTransactionWithoutResult(TransactionStatus transactionStatus)
     {

                Object transactionStatusSavepoint = transactionStatus.createSavepoint();
                //do some work
                transactionStatus.rollbackToSavepoint(transactionStatusSavepoint);
      }
     });


这一切都很好。现在,我想这样做:

@Before
    public void beforeTest() {
        _template.execute(new TransactionCallbackWithoutResult() {

            @Override
            protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {

                _transactionStatusSavepoint = _transactionStatus.createSavepoint();
            }
        });

@Test
public void foo(){//do some stuff}

@After
    public void afterTest() {
    _transactionStatus.rollbackToSavepoint(_transactionStatusSavepoint);
}


如果您不了解或想详细说明,请告诉我。
提前致谢!

最佳答案

一旦doInTransactionWithoutResult完成,事务状态将无效,因此您不能在afterTest方法中使用它。

看来您正在使用spring进行测试。 Spring带有测试运行器,可以在测试完成时回滚事务。

Spring testing

10-06 05:30