3 回答
TA贡献1772条经验 获得超6个赞
看起来您正在使用 Mockit 框架。您可以尝试执行以下操作:
new MockUp<B>() {
@Mock
int calculate(int x, int y) // no access modifier required
{
return 45; // your value
}
};
TA贡献1829条经验 获得超7个赞
您的问题是class对 class的隐藏依赖。AB
@Jens 的回答向您展示了如何使用PowerMock解决这个问题,但我认为这是对您糟糕设计的投降。
更好的是通过将类的实例注入到类的对象中,最好是作为构造函数参数来使这种依赖显式化。最好使用依赖注入框架,如或。 您可以使用调节 Mockito 结构。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());
}
添加回答
举报