Я пишу тест Junit для метода methodA
, который находится в классе
classA
Поскольку вы тестируете модуль methodA
из classA
, вы должны сосредоточиться на насмешке только по вызову bObj.methodB();
. Вы не должны вовлекаться в то, что оно делает или не делает внутренне.
Не вы создаете classB
объект в methodA
, что не является идеальным сценарием. Вы должны сделать bObj
в качестве переменной экземпляра classA
с соответствующими геттерами, сеттерами и конструктором.
Затем от вашего класса тестирования установите эту classB
зависимость.
Вы должны структурировать свой код и что-то вроде этого:
class classAMicroTest {
@Test
public void junitTest() {
String arg1 = "arg1";
classA aObj = new classA();
classB mockedBobj = Mockito.mock(classB.class);
Mockito.when(mockedBobj.methodB()).thenReturn(new ArrayList<>());
aObj.setbObj(mockedBobj);
aObj.methodA(arg1);
Mockito.verify(mockedBobj, times(1)).methodB());
}
}
class classA {
classB bObj;
public void setbObj(classB bObj) {
this.bObj = bObj;
}
public String methodA(String arg1) {
bObj.methodB();
// somwthing on arg1
return result;
}
}
class classB {
public List<String> methodB() {
return new ArrayList<>();
}
}