Вы должны реорганизовать свой класс, чтобы сделать его более тестируемым. Два дополнительных конструктора в следующем фрагменте кода можно использовать в тестах с макетами для Class C или ClassB:
public class ClassA() {
@NonNull
private ClassB b;
public ClassA {
this(new ClassC());
}
public ClassA(ClassC c) {
this(c.mymethod());
}
public ClassA(ClassB b) {
this.b = b;
}
}
Пример тестового примера:
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Test;
public class ClassATest {
@Test
public void test() {
ClassB b = mock(ClassB.class);
// ... setup your mock for b
ClassC c = mock(ClassC.class);
when(c.mymethod()).thenReturn(b);
ClassA a = new ClassA(c);
// ... call the method of "a" you want to test
}
}