1

これが可能かどうか疑問に思っていました。これは私の最初の質問なので、プロトコルに厳密に従っていない場合はご容赦ください. トランザクション テンプレートを使用してトランザクションをロールバックできます。しかし、今私がやりたいことは、@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);
}

わからないことや詳しく知りたいことがあれば教えてください。前もって感謝します!

4

1 に答える 1

2

doInTransactionWithoutResult が完了すると、トランザクション ステータスは無効になるため、afterTest メソッドでは使用できません。

テストに春を使用しているようです。Spring には、テストの完了時にトランザクションをロールバックできるテスト ランナーが付属しています。

春の試験

于 2012-06-12T20:35:51.017 に答える