2

junit テストを書いているときに、EasyMock の予期しない動作が発生しています。最後に、何が起こったのかを確認するために、モックを作成する行が 1 行残るまで、いくつかのコード行を削除しました。

@Test
public void testSimple() throws Exception {
    Socket socket = EasyMock.createMock(Socket.class);
}

このjunitテストはエラーを生成します:

[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.052 sec

これは、次のような通常のインスタンス化がある場合には当てはまりません。

@Test
public void testSimple() throws Exception {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
}

このjunitテストはそれに満足しているようです:

[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.047 sec

誰かがこの曖昧さをクリアできるのだろうか。ありがとう。

4

3 に答える 3

4

具体的なクラスのモックを作成しようとしているため (Socket はインターフェイスではありません)、おそらく少し余分な作業が必要になるでしょう。

EasyMock の 3.X バージョンを使用していると仮定すると、クラスのモックに必要な他のライブラリを追加する必要がある可能性があります。

クラスのモックを実行するには、cglib (2.2) および Objenesis (1.2) がクラスパスに含まれている必要があります。

于 2012-11-09T04:01:12.453 に答える
3

具象クラスをモックする場合は、EasyMock クラス拡張を使用する必要があります

http://easymock.org/EasyMock2_2_2_ClassExtension_Documentation.html

リンクはその方法を示しています。 http://helpdesk.objects.com.au/java/how-do-i-mock-a-concrete-class-using-easymock

于 2012-11-09T04:05:54.557 に答える
2

EasyMock 3.0 (現在のバージョンは 3.2) の時点で、具象クラスをモックできるため、現在このエラーは発生しません。

于 2014-04-02T09:08:51.283 に答える