18

私は Java プロジェクトに取り組んでおり、DTO にある .equals メソッドの単体テストを作成したいと考えています。.equals メソッドには、テスト対象の両方のオブジェクトによって呼び出される .getClass() メソッドがあります。これをモックしたいのですが、どのタイプのオブジェクトが必要なのかわかりません。私は試した、

when(mockRoomInv.getClass()).thenReturn(RoomInv.class);

しかし、何もしなかったことは確かです。getClass の戻り値の型は何ですか? また、それを操作するにはどうすればよいですか?

4

2 に答える 2

9

最後に、Mockito でそのObject.getClass()メソッドをモックすることはできません。コードをリファクタリングして別の方法でクラスを注入することを強くお勧めします。それが不可能な場合は、最終メソッドをモックできるpowermockを試すことができます。Object.getClass()は少し特殊なので、必ずMockGateway.MOCK_GET_CLASS_METHOD = truepowermock に設定してください。

于 2012-10-30T14:01:35.440 に答える
5

Object.getClass()finalメソッドであるため、Mockito でモックすることはできません。

https://github.com/powermock/powermockで利用可能な Powermock (これは非常にクールなツールです;) を使用して、モックstaticfinalメソッド (このようなもの) やメソッドを使用することもできます。private

Mockito wiki article で説明されているように、Mockito で使用できます。そこには、いくつかの有用な例があります。

于 2012-10-30T14:04:24.967 に答える