私はいくつかのレコードを読み込んでデータベースに挿入する簡単なアプリケーションを書いています。私は、挿入ロジックを処理するストアドプロシージャを作成し、それを個別にテストする予定です。今私は、ビジネスオブジェクトをとり、それをストアドプロシージャ呼び出しに渡すロジックの部分について、優れた単体テストを作成したいと考えています。MySQLストアドプロシージャを呼び出すJavaの単体テスト方法は?
私はは私がやりたいことは、その後コールが予想されるパラメータ値で作られていることを主張し、データベース接続のモックを渡すと思い:
Connection dbConnection = makeMockConnection(); // how?
MyObjectWriter writer = new MyObjectWriter(dbConnection);
writer.write(someSampleObject);
// somehow assert that dbConnection called
// `sp_saveMyObject` with param values x, y, and z
しかし、それは多くの作業のように思えます内部を掘ってjava.sql.Connection
、それがどのように動作するのか理解してから、すべての結果をモックしてください。私のためにこれすべてを行うテストライブラリがありますか?私はこれに間違った方法で来ていますか?
メソッドが呼び出されたかどうかを確認するために接続を偽装するのは本当に簡単です。あなたは[Mockito](http://code.google.com/p/mockito/) – Kai
に慣れていなければなりません。特定の方法でビジネスロジックを制約するのを避けるために、私は 'Connection.createStatement' 'Connection.prepareStatement'や' Connection.prepareCall'や 'Connection.nativeSql'さえありますが、いずれも*正しい*である(データが手続きに渡される)。私はこれらすべてのものを模倣しないようにしています。少なくとも、私は自分自身でそれらのモックを書く必要があります。 – Coderer