Ваша проблема в скрытой зависимости класса A
от класса B
.
Ответ @Jens показал вам, как решить эту проблему с помощью PowerMock , но я считаю, что это отказ от вашего плохого дизайна.
Лучше было бы сделать эту зависимость явной , внедрив экземпляр класса B
в объекты класса A
предпочтительно в качестве параметров конструктора.
Предпочтительно использовать каркас внедрения зависимостей , такой как guice
или spring
.
Вы можете использовать Regulat Mockito конструкций.
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());
}