我試圖用EasyMock和TestNG編寫一些單元測試,並且遇到了問題。鑑於以下幾點:使用EasyMock測試參數值
void execute(Foo f) {
Bar b = new Bar()
b.setId(123);
f.setBar(b);
}
我試圖測試該欄的ID獲取以下列方式進行相應的設置:
@Test
void test_execute() {
Foo f = EasyMock.createMock(Foo.class);
execute(f);
Bar b = ?; // not sure what to do here
f.setBar(b);
f.expectLastCall();
}
在我的測試,我不能就這麼叫f.getBar()
和檢查它是否是因爲f
是模擬對象。有什麼想法嗎?這是我想看看EasyMock v2.5增加andDelegateTo()
和andStubDelegateTo()
?
哦,只是爲了記錄... EasyMock的文檔打擊。
我相信如果你創建的是同樣的酒吧,它會工作。你爲什麼不嘗試? – 2010-05-06 17:08:09
我的理解是,這種方法更依賴Bar.equals()的實現,而不是執行我的execute()方法。雖然我認爲這會奏效,但似乎還有更好的辦法。 – fmpdmb 2010-05-06 17:17:48
是的,你會斷言傳遞給模擬的酒吧實例等於你所期望的。如果你的Bar的'equals()'方法不足以滿足你想要測試的內容,或者在你的測試中測試比你關心的更多的字段,那麼捕獲是一個更好的選擇(儘管它提出了什麼Bar的問題。等於()是不夠的)。 – 2010-05-06 17:39:35