Я бы посоветовал прочитать немного больше о насмешках и о том, как это делается. Посмотрите в тестовом коде, который вы пытались запустить:
ClassB objB = Mockito.mock(ClassB.class);
Mockito.when(objB.performCalculation(5, 10)).thenReturn(15);
int result = objA.add(5, 10);
assertEquals(result, 15);
Что происходит .
Вы издеваетесь над ClassB, но не используете смоделированный экземпляр objB
.
Когда вы издеваетесь над классом, вы возвращаете имитированный экземпляр , это не значит, что класс теперь подвергается насмешке в ходе вашего теста, это просто означает, что вы можете использовать Mockito для манипулирования этим конкретным инстаграмом.
Что должно происходить .
Если вы не можете использовать этот экземпляр для тестирования метода, зависит от него, как в вашем случае, это означает, что у вас очень сильныйзависимость между этими двумя классами, и если это проблема для ваших тестов, это обычно означает, что ваш дизайн неисправен. вы должны иметь возможность внедрить ClassA в ClassB, либо подставив ему аргумент в конструкторе
public ClassA(ClassB bInstance){
this.bIntance = bInstance
}
, либо, если это необходимо для конкретного действия, в качестве аргумента функции.
public add(ClassB classBInstance, int a, int b){
classBInstance. performCalculation(a.b)
}
Это позволит вам смоделировать экземпляр и запустить функцию ClassA с конкретной реализованной вами реализацией:
ClassB classBInstance1 = Mockito.mock(ClassB.class)
ClassB classBInstance2 = Mockito.mock(ClassB.class)
Mockito.when(classBInstance1.performCalculation(5, 10)).thenReturn(15);
Mockito.when(classBInstance2.performCalculation(5, 10)).thenReturn(42);
new ClassA(classBInstance1).add(5,10) //returns 15
new ClassA(classBInstance2).add(5,10) //returns 42
new ClassA().add(classBInstance1,5,10) //15
new ClassA().add(classBInstance2,5,10) //42