我想知道这是否可能。这是我的第一个问题,所以如果我不完全遵守协议,请耐心等待。我可以使用交易模板回滚我的交易。但是现在我要做的是将状态保存在标记为@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