У меня возникли проблемы с написанием модульного теста для моего приложения.В настоящее время я тестирую класс A. В тестируемом методе класса AI он вызывает метод вспомогательного класса, который затем вызывает другой метод внутри того же вспомогательного класса (getKeyObject), единственной функцией которого является вызов статического методакласс, содержащийся в структуре, которую я использую (buildKeyObject ()).Я пытаюсь заглушить getKeyObject (), чтобы он возвращал макет объекта, который обычно генерируется, но я понятия не имею, как поступить.
Один из способов, который я подумал, - использовать PowerMockito и использовать метод PowerMockito.mockStatic(ClassInFramework.class)
для создания макета класса в используемой платформе, а затем использовать when(ClassInFramework.buildKeyObject()).thenReturn(KeyObjectMock)
, но из-за некоторых ограничений в работе яделаю, мне запрещено использовать PowerMockito.Я также не могу использовать Mockito.spy или аннотацию @spy по тем же причинам.
class ATest{
public A aInstance = new A();
@Test
public void test(){
KeyObject keyObjectMock = Mockito.mock(KeyObject.class);
/*
between these 2 lines is more mockito stuff related to the KeyObjectMock above.
*/
String content = aInstance.method1();
Assert.assertEquals(content, "string")
}
}
class A{
public RandomClass d = new RandomClass()
public String method1(){
Helper helper = new Helper();
Object a = helper.method2()
return d.process(a);
}
}
class Helper{
public Object method2(){
KeyObject keyObject = getKeyObject();
Object object = keyObject.getObject();
return object;
}
public KeyObject getKeyObject(){
return ClassInFramework.buildKeyObject(); //static method call.
}
}
Можете ли вы, ребята, помочь мне с этим?