假設我們有方法在類A中測試,從類B調用方法。爲了測試它,我們爲B創建了模擬,然後驗證它是否被調用。驗證(...)足夠進行單元測試還是需要聲明測試方法的實際結果? 以下是簡化例子來闡明我的擔憂:Mockito中模擬方法的單元測試最佳實踐
public class StringWriterATest {
StringWriterB b = mock(StringWriterB.class);
@Test
public void stringWriterATest() {
StringBuffer sb = new StringBuffer();
StringWriterA a = new StringWriterA();
a.stringWriterB=b;
a.append(sb);
ArgumentCaptor<StringBuffer> argument = ArgumentCaptor.forClass(StringBuffer.class);
verify(b).append(argument.capture());
assertEquals("StringWriterA", ((StringBuffer)argument.getValue()).toString());
//do we really need this or above is enough for proper unit test of method a.append(sb);
//assertEquals("StringWriterA_StringWriterB", sb);
}
}
public class StringWriterA {
public StringWriterB stringWriterB;
public void append(StringBuffer sb) {
sb.append("StringWriterA");
stringWriterB.append(sb);
}
}
class StringWriterB {
public void append(StringBuffer sb) {
sb.append("StringWriterB");
}
}
問候, 最大
感謝您的回答灰色,是的這個例子只是試圖瞭解如何測試與其他模擬交互a.append(sb)。我剛剛更新了它,使我的問題更加清晰。我試圖瞭解,如果從示例驗證足以正確測試A類的追加方法 – maxx 2011-04-20 01:28:06