0
有很多問題已經提出,但對於我的特殊情況沒有真正有用的信息。測試修改模擬類的字段的方法
我想測試一個方法,它在A類中,它是一個void,它調用一些來自B類的方法,然後修改或檢查它的字段 - 多個。
下面是一個例子:
public class A {
private B b;
public A(B b){
this.b = b;
}
public void checkStageOne(Worksheet ws){
if(long statement){
if(B.checkStorage(ws)){
ws.setThing("Nasty");
}
else { ws.setStatus("Not so nasty"); }
}
}
讓說的LinkedLists在某種程度上填補了。 A類checkStageOne()的參數包含在列表中的B類
public class B {
private LinkedList<Worksheet> sheetList = new LinkedList<>();
private LinkedList<UsedParts> upList = new LinkedList<>();
private LinkedList<UsedParts> matList = new LinkedList<>();
public boolean checkStorage(int id){
for(UsedParts up : upList){
if(up.getSheetID()== id){
for(Material mat : matList){
if(up.getMatID() == mat.getMatID()){
if(mat.getQuantity() - up.getQuantityNeeded() < 0){
return false;
}
}
}
}
}
return true;
}
我想嘲笑B類,但我完全不知道我怎麼會假B的字段,然後甚至測試結果在他們。我所知道的是,我可以用EasyMock.expectLastCall()來測試一個void。但是接下來我需要檢查它是否確實使用了斷言。
你有什麼建議嗎?
VBR, assaultpig
可以爲B中接受3個linkedLists,然後使用創建的Mockito爲B的測試實例創建構造函數: LinkedList的mock1 =模擬(LinkedList.class); LinkedList mock2 = mock(LinkedList.class); LinkedList mock3 = mock(LinkedList.class); new B(mock1,mock2,mock3); 然後,你可以檢查是否有與這些嘲笑的互動 –
謝謝,這是一個好主意。你知道如何檢查EasyMock嗎? – assaultpig