2

SpringJDBCテンプレートを使用してMySQLデータベースと通信するJavaアプリケーションがあります。私のテストの1つでは、統合テストに存在しないテーブルをシミュレートしたいのですが、さまざまな理由から、テストデータベースでテーブルを一時的に削除/再作成したり名前を変更したりすることはできません。

また、他のメソッドを使用する場合にエラーをスローするテーブルにヒットする特定のDAOメソッド呼び出しをモックアウトしたくありません。データベースに送信される前にSQLをインターセプトし、テーブル名(存在する場合)を偽の名前に置き換えるなど、同じ効果をもたらす何かを実行したいと思います。

勝利のためのテスト駆動開発!

4

2 に答える 2

1

傍受が必要な場合は、アスペクトを使用することが解決策になる可能性があります。

  • たとえば、「データベースに送信される前にSQLを送信する」という特定のメソッドの呼び出しなど、ポイントカットインターセプトを作成する必要があります。

  • 次に、呼び出しを続行する前にデータを操作できる(「テーブル名を偽の名前に置き換える」)前/前後のアドバイスを作成できます。

アスペクト指向プログラミング、およびSpringを使用した指向プログラミングを参照してください。

于 2012-04-22T08:38:38.497 に答える
1

このようなテストにはEasyMockを使用する必要があります。指定した例外をメソッドにスローさせる方法はいくつかあります。これを使用できない場合は、アプリケーション層を効果的に分離していません。

http://www.easymock.org/EasyMock2_2_Documentation.htmlの「 WorkingwithExceptions 」という見出しの下をご覧ください。

于 2012-04-20T15:55:14.280 に答える