7

と を使用mockito-all-1.9.5-rc1.jarしてpowermock-mockito-1.4.12-full.jarいます。非最終クラスで最終メソッドをモックするためのこの単純な単体テストを実行すると。

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(ABC.class)
public class ABCTest {

    @Test
    public void finalCouldBeMock() {
        final ABC abc = PowerMockito.mock(ABC.class);
        PowerMockito.when(abc.myMethod()).thenReturn("toto");
        assertEquals("toto", abc.myMethod());
    }

}

私がそれを実行したとき、私は java.lang.NoClassDefFoundError: org/mockito/internal/MockitoInvocationHandler Caused by: java.lang.ClassNotFoundException: org.mockito.internal.MockitoInvocationHandler

と でクラスを検索MockitoInvocationHandlerするmockito-all-1.9.5-rc1.jarpowermock-mockito-1.4.12-full.jar。何も見つかりませんでした。この問題について助けが必要です! ありがとうございました

4

1 に答える 1

15

Mockito 1.9.5-rc1 は、サードパーティのモック メーカーを使用できるように内部でリファクタリングする必要がありました。MockitoInvocationHandlerMockito 1.9.0 までは (パッケージ名が示すように) Mockito の内部の一部でした。

これらの変更により、現在の一部の古いバージョンの Powermock リリース、最新の Mockito リリースと互換性がありません。

ファイナルまたはスタティックのモック/スタブを避けるもう 1 つの理由 ;)

乾杯、

于 2012-08-28T12:16:44.360 に答える