ホームページ  >  に質問  >  本文

java - 単体テスト、データベースを汚染せずにSpringにトランザクションを管理させる方法

DAO メソッドをテストするために springjunit を使用しようとしています。インターネット上で、トランザクションに Spring の宣言型トランザクション管理 (つまり @Transactional) を使用するメソッドをいくつか見たことがあります。テストが完了すると、Spring はテスト メソッドをロールバックし、それによってテストの目的が達成されることを示します。
次に、このアプローチに従って dao で操作を追加する方法をテストしたところ、トランザクションの送信後にロールバックが成功せず、テストしたデータベースに余分なデータがあることがわかりました。 。最初は Spring がロールバックを実行していないためだと思いましたが、後でコンソールの印刷情報を観察したところ、ロールバック情報はあったものの、なぜ失敗したのかは不明でした。関連する解決策をいくつか見つけましたが、問題は解決されませんでした。とても困っているので相談に来たのですが、アドバイスをいただければ幸いです。

以下は私のコードと対応する構成です

リーリー リーリー リーリー リーリー
阿神阿神2707日前1071

全員に返信(2)返信します

  • 我想大声告诉你

    我想大声告诉你2017-06-12 09:27:30

    テストには dbunit を spring-test と組み合わせて使用​​します

    返事
    0
  • typecho

    typecho2017-06-12 09:27:30

    Transactional はサービス層のトランザクションです。これを使用すると、DAO 層でトランザクションを記述する必要がなくなります。

    返事
    0
  • キャンセル返事