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()
をrunnigとき、私は次の例外を得た:
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のバイト配列で文字列を初期化するため、最後のバイトはゼロのままです。 Stringの作成をデバッグしようとすると、4文字分の長さになります。 –