0
我试图使用mockito来验证方法是否被调用。这里有一个例子: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){}
}
但运行过程中出现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的字节数组初始化字符串。最后一个字节保持为零。尝试调试字符串的创建,你会看到它的长度为4个字符。 –