0

したがって、ユニットテストにはeasymockを使用しています。dbにクエリを実行し、プロジェクトのリストを返すfindProjectメソッドがあります。entityMangerを返すオブジェクトをモックしました(JPAとHibernateを使用しています)。つまり、projectListを返すmockedRepository.findList()のようなものです。これがモックオブジェクトです。したがって、これらの状況では、findListの戻り値を確認できません。右?これはモックオブジェクトであり、必要なものを返すだけです。したがって、データベースをクエリするこの種のメソッドをテストする場合は、モッキングを使用できません。右?easyMockingでメソッドが呼び出されたかどうかを確認できます。右?

ありがとう。

4

3 に答える 3

2

H2HSQLなどの単純なメモリ内JavaSQLデータベースを使用することをお勧めします。嘲笑する代わりに。

于 2012-07-20T14:05:31.890 に答える
1

少なくとも2つのオプションがあります。

  1. EntityManagerを使用して独自のインスタンスを作成し、Persistence.createEntityManagerFactory("persistence_unit_name").createEntityManager()それをスタブで使用するか、テスト対象のオブジェクトに挿入します。
  2. あなたのためにそれを行うjpa-unitのようなものを使用してください。

私は個人的に、プロジェクトのすべてのクエリに2番目のオプションを使用しています。このライブラリを使用して、解析例外などなしでクエリが実行されるかどうかをテストします。少し前に、クエリが返すように意図したものを返すかどうかをテストしようとしました(このライブラリは、dbの設定と、dbunitのようなテストデータの入力にも役立ちます)が、面倒だったため、あきらめました。

于 2012-07-19T19:14:44.480 に答える
1

したがって、データベースをクエリするこの種のメソッドをテストする場合は、モッキングを使用できません。右?

右。

于 2012-07-20T13:04:54.437 に答える