7

我正在使用mockito-all-1.9.5-rc1.jarpowermock-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.jarand中搜索类时powermock-mockito-1.4.12-full.jar。我找不到任何东西。需要帮助解决这个问题!谢谢

4

1 回答 1

15

Mockito 1.9.5-rc1 必须在内部进行重构以允许第三方模拟制造商。MockitoInvocationHandler在 Mockito 1.9.0 之前,它是 Mockito 内部结构的一部分(正如包名所暗示的)。

由于这些更改,截至今天,当前某些较旧版本的 Powermock 版本与最新的 Mockito 版本不兼容。

避免模​​拟/存根决赛或静态的另一个原因;)

希望能帮助干杯,

于 2012-08-28T12:16:44.360 回答