1

JUnitテストにeasyMockを使用しています。Projectオブジェクトを引数として取得し、そのプロジェクトの変更日を設定してdbに保持するメソッドをテストしたいと思います。

だから例えば

public void setProject(Project project) {
 project.setModifyDate(new Date());
 this.reporsitory.persist(project);
 }

今、私のテスト方法では、モックされたプロジェクトを2つ持っています。それらの1つについて、getModifyDateの戻り値を設定しました。他のモックされたプロジェクトオブジェクトについては、setProject(mockedProject);と呼びます。ここで、これら2つのプロジェクトオブジェクトをassertEqualします。

問題は、easymockが、テストしているクラスのproject.setModifyDate(new Date())でエラーをスローすることです。

例外:予期しないメソッド呼び出しproject.setModifyDate(..)..期待:1、実際:0。

セッターメソッドは期待していないようです。私が間違っていることを教えてください。

ありがとう。

4

1 に答える 1

3

はい、作成したモックオブジェクトの種類が原因です。1回の呼び出しの実行時に、コードが定義したすべてのメソッドを呼び出すことを想定しています。正確な名前は思い出せませんが、それはnicemockのようなものだと思いますが、strictmockは、予想されるすべてのメソッドをコードに実行させます。モックオブジェクトにはEasyMock.createNiceMock()を使用する必要があります。あなたが持っているエラーは、あなたがsetModifyDateを呼び出すことを期待しているが、あなたのコードはその呼び出しのためではなかったからです。

そのメソッドにEasyMock.expectedを配置していないはずなので、予期しない呼び出しです。モックオブジェクト.expected(getMethod).andReturns(something)を追加する必要があります。

于 2012-07-16T04:14:40.537 に答える