3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
看起來(lái)您正在使用 Mockit 框架。您可以嘗試執(zhí)行以下操作:
new MockUp<B>() {
@Mock
int calculate(int x, int y) // no access modifier required
{
return 45; // your value
}
};

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的問(wèn)題是class對(duì) class的隱藏依賴。AB
@Jens 的回答向您展示了如何使用PowerMock解決這個(gè)問(wèn)題,但我認(rèn)為這是對(duì)您糟糕設(shè)計(jì)的投降。
更好的是通過(guò)將類的實(shí)例注入到類的對(duì)象中,最好是作為構(gòu)造函數(shù)參數(shù)來(lái)使這種依賴顯式化。最好使用依賴注入框架,如或。 您可以使用調(diào)節(jié) Mockito 結(jié)構(gòu)。BA
guicespring
class A {
int a;
private final B b;
public A(B b){
this.b=b;
}
public int add() {
a = b.calculate(4, 5);
return a;
}
}
@Mock
B bclass;
A aclass;
@Before
public void setUp() {
aclass = new A(bclass);
}
@Test
public void testAClass() {
when(bclass.calculate(4, 5)).thenReturn(45);
assertEquals(45, aclass.add());
}
添加回答
舉報(bào)