2 回答

TA貢獻1872條經驗 獲得超4個贊
Mockito 在構造函數注入兩個或多個相同類型的字段時存在一些問題。但是,如果您使用 setter 注入,它會完美運行。
所以你可以像這樣重構“Sender”類:
public class Sender {
private SomeClass firstField;
private SomeClass secondField;
public void setFirstField(SomeClass firstField) {
this.firstField = firstField;
}
public void setSecondField(SomeClass secondField) {
this.secondField= secondField;
}
}
請記住,如果類同時具有構造函數和設置器,Mockito 將選擇構造器進行注入并完全忽略設置器。
編輯:如果你出于某種原因肯定需要使用構造函數,你總是可以手動模擬字段而不是使用 Mockito 注釋。因此,在您的情況下,Sender 將保持不變,而 SenderTest 將是這樣的:
public class SenderTest {
private SomeClass firstField;
private SomeClass secondField;
private Sender sender;
@Before
public void setUp() {
firstField = Mockito.mock(SomeClass.class);
secondField = Mockito.mock(SomeClass.class);
sender = new Sender(firstField, secondField);
}
@Test
public void smokeTest() {
}
}

TA貢獻1794條經驗 獲得超8個贊
這取決于它SomeClass
本身是什么。它是一個數據(POJO)對象,值得在測試中創建它們(即填充隨機生成的值)。
如果是服務。它可能是架構問題的標志。為什么你需要相同服務的兩個副本?可能進行一些重構是有意義的。
添加回答
舉報