繁体   English   中英

Mockito验证方法一次调用

[英]Mockito verify method called once

我正在尝试使用Mockito来验证是否调用了方法。 这是一个例子:

@Test
public void t(){
    InvokedFromTest ift = mock(InvokedFromTest.class);
    TestClass t = new TestClass();
    t.ift = ift;

    t.mm(new String(ByteBuffer.allocate(4).put("123".getBytes()).array()));
    verify(ift, times(1)).m("123");
}

private static class TestClass{
    public InvokedFromTest ift;
    public void mm(String s){ ift.m(s); }
}

private static class InvokedFromTest{
    public void m(String s){}
}

但是当runnig t()出现以下异常:

Argument(s) are different! Wanted:
invokedFromTest.m("123");
-> at com.pack.age.TableRowIgniteProcessingLogicTest.t(TableRowIgniteProcessingLogicTest.java:62)
Actual invocation has different arguments:
invokedFromTest.m("123");
-> at com.pack.age.TableRowIgniteProcessingLogicTest$TestClass.mm(TableRowIgniteProcessingLogicTest.java:67)

为什么? 为什么会出现此错误? 如何使此测试按预期工作?

您正在分配长度为4的字节缓冲区,而仅存储3位数字(每个长度为1字节)。 将此字节数组传递给String的构造函数,将创建一个4个字符的字符串,其中最后一个字符为\\ u0000(byte = 0)。

使用ByteBuffer.allocate(3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM