ByteBuffer mock允许所有调用,但我没有设置JMOCK来允许它

时间:2014-04-08 16:16:58

标签: java mocking jmock

模拟ByteBuffer时,我遇到了JMOCK 2.6和JUINT4的问题

@RunWith(JUnit4.class)
public class Test {

    @Rule
    public JUnitRuleMockery context = new JUnitRuleMockery() {
        {
            setImposteriser(ClassImposteriser.INSTANCE);
        }
    };

    @Before
    public void setUp() throws Exception {
    }

    @org.junit.Test
    public void testMockByteBuffer() {
        final java.nio.ByteBuffer byteBufferMock = context.mock(java.nio.ByteBuffer.class);
        byteBufferMock.remaining();
    }

}

我预计测试会失败,但它会通过。

1 个答案:

答案 0 :(得分:0)

刚才意识到我无法模拟最终方法。 java.nio.ByteBuffer.remaining()声明为final。

自: http://jmock.org/mocking-classes.html

  

如果要模拟最终类或最终方法,JDave库包含一个终结器> Instrumentation代理,它可以在JVM加载类之前使类取消。然后,他们可以被ClassImposteriser嘲笑。