2011-11-26 11 views
13

make db接続でクラスをテストしたい。私がテストしたいクラスは、コンストラクタConnectionクラスのparamとして受け入れます。 mockオブジェクトをコンストラクタに渡したい。 db接続を模擬する方法を例に、良いフレームワークを教えてもらえますか?Javaモックデータベース接続

+1

このリソースに興味があります:http://programmers.stackexchange.com/questions/118933/what-elements-of-my-junits-should-i-mock –

答えて

10

MockRunnerJDBCをサポートしています。 Mockitoのような一般的なmockingフレームワークも動作しますが、JDBCは相互に返すインタフェースのセットであり、手で嘲笑するのは難しいでしょう。 How to stub/mock JDBC ResultSet to work both with Java 5 and 6?

しかしJDBCは、私はいくつかの薄いDAO層内のJDBCアクセスを抽象化することをお勧めのいずれか(使用するツールに関係なく)とても脆く、冗長ですモック(@duffymoの回答を参照)、または中のために行く:あなた自身のために参照してください。 - メモリデータベースH2のように。

も参照してください:

+0

http://mockrunner.github.io /更新されたバージョンpviをホストしているサイトで言う:) –

3

接続はインターフェイスです。すべての模擬フレームワークは、それをモックすることができます:EasyMockMockito、...

他のJavaインターフェイスを模擬したことと違うことはありません。

1

あなたはeasymockを試すことができます。それは私が思う使いやすいです。 参照のためのチュートリアルを見つけることができます。 easymock

3

私はモック接続を作成しません - それは私の意見では、何も証明しません。

なぜライブ接続で完全にテストした後にリポジトリ/ DAO自体をモックするのか分かります。すでにテストしているので、モックリポジトリ/ DAOをサービスや他のクライアントに渡すことができます。統合テストを行うまで動作することを証明する必要はありません。

1

多くのテストケースでそのモックを再利用する場合は、独自の実装実装を検討し、その実装をどこでも再利用することも検討できます。

3

あなたは、上記の回答で述べたものとしてモックフレームワークを使用するか(私は個人的にEasyMockを使用) ORは、あなたが所有してモックオブジェクトを作成します。

class FakeConnection extends Connection{ 
     // Overrive all method behavious you want to fake. 
} 
1

アコライトフレームワークは、このような目的のために有用です - >https://github.com/cchantep/acolyte

このライブラリでは、ハンドラを提供する接続インスタンスを作成できます。ハンドラを実装すると、結果セットの生成やカウントの更新(または警告)など、クエリや更新を「ディスパッチ」することができます。