Makedb接続でクラスをテストしたい。テストしたいクラスは、コンストラクターConnection
クラスのパラメーターとして受け入れます。モックオブジェクトをコンストラクターに渡したい。 db接続をモックする方法の例で良いフレームワークを教えてもらえますか?
[〜#〜] jdbc [〜#〜] をサポートする MockRunner を使用できます。 Mockito のような一般的なモックフレームワークも機能しますが、JDBCは相互に戻るインターフェイスのセットであるため、ハンドモックは困難です。自分の目で確かめてください: JDBCResultSetをスタブ/モックしてJava 5と6? の両方で機能させる方法
ただし、JDBCのモックは(使用するツールに関係なく)非常に脆弱で冗長であるため、薄いDAOレイヤー内でJDBCアクセスを抽象化することをお勧めします(@ duffymoの回答を参照)。 H2 のようなインメモリデータベース。
参照:
私はモック接続を作成しません-私の意見では、それは何も証明しません。
ライブ接続で完全にテストした後、リポジトリ/ DAO自体をモックする理由がわかります。すでにテスト済みであるため、モックリポジトリ/ DAOをサービスまたは他のクライアントに提供します。統合テストを実行するまで、モックリポジトリ/ DAOが機能することを証明する必要はありません。
上記の回答に記載されているようなモックフレームワークを使用できます(私は個人的にEasyMockを使用しています)[〜#〜]または[〜#〜]独自のモックオブジェクトを作成します。
class FakeConnection extends Connection{
// Overrive all method behavious you want to fake.
}
easymockを試すことができます。使いやすいと思います。参考のためにチュートリアルを見つけることができます。 easymock
多くのテストケースでそのモックを再利用する場合は、接続の独自の実装を実装し、その実装をどこでも再利用することを検討することもできます。
私のAcolyteフレームワークはそのような目的に役立ちます-> https://github.com/cchantep/acolyte 。
このライブラリを使用すると、ハンドラーを提供する接続インスタンスを作成できます。ハンドラーを実装すると、クエリまたは更新を「ディスパッチ」することができます。結果セットを生成するか、カウント(または警告)を更新します。