あなたの関数がデータベースからデータを引き出すこと以外に面白いことをしている場合、検索を別の関数に抽出してモックして残りの部分をテストする必要があります。
これでも、データベースアクセスをテストする作業が残っています。定義されているデータベースにアクセスするのではなく、SQL文が実際に動作するかどうかを確認するSQL文を送信するかどうかをテストするだけで、単体テストを行うことはできません。
だからあなたは、様々なoptiones持つデータベース
が必要になります。
1)をテストすることによって変更されないようなテストのために固定されたデータベースを作成します。
プロ:概念的に簡単 Con:維持しにくい。テストは同じデータに依存しているため、相互依存関係になります。更新、挿入、または削除を行うものをテストする方法はありません(DDLはもちろん)
2)テスト中にデータベースを作成します。ここでは、テストのためのデータベースの設定とデータの入力という2つの問題があります。
設定:
1)テスト(少なくとも開発者+ CI-server)を実行する必要があるerveryoneためのユーザー/スキーマ/データベースと、データベース・サーバを実行しています。スキーマは、hibernateやデプロイメントに使用するスクリプトを使用して作成できます。
素晴らしい作品ですが、古いファッションモデルのDBAを狂ってしまいます。アプリケーションは、スキーマ名に依存してはいけません。また、アプリで複数のスキーマが使用されている場合にも問題が発生します。この設定はかなり遅いです。それは速いディスクに置くのを助けることができます。 RAMディスクのように
2)メモリデータベースがあります。簡単にコードから始めることができます。しかし、ほとんどの場合、本番データベースと同じように動作します。違いを隠そうとするものを使用すると、これはあまり問題になりません。私はしばしば、最初のビルド段階ではメモリ内のデータベースを使用し、2番目の段階では実際のものを使用します。
テストデータ
1)人々はDbUnitをを使用するように私に言うのロード。私はそれがXMLの数が多く、列や制約が変わったときに維持するのが難しいと確信していません。
2)私は通常のアプリケーションコードを好む。 (Java + Hibernate)を使用していますが、多くの場合、テスト用のテストデータを書くのに適しているはずです。 http://blog.schauderhaft.de/2011/03/13/testing-databases-with-junit-and-hibernate-part-1-one-to-rule-them/
これは興味深いかもしれません:http://blog.schauderhaft.de/2011/03/13/testing-databases-with-junit-and -hibernate-part-1-one-to-rule-them/ –