我这里有一个简化版的问题。A类有一个受保护的方法。B类继承了这个方法。
public class A{
protected String getString(){
//some Code
}
}
public class B extends A{
public void doSomething(){
//someCode
String result = getString();
}
}
我现在使用Mockito编写一个单元测试,该测试位于另一个包的测试中,我想要测试
doSomething()
方法。为了做到这一点,我需要模拟getString()调用。由于该方法是protected的而我的测试类位于不同的包中,因此我无法使用doReturn(...).when(classUnderTest).getString()
。问题在于,我在类B上进行了监视。所以我不能使用mock(new B(), Mockito.CALLS_REAL_METHODS)
。我尝试通过反射获取受保护的方法:
Method getString = classUnderTest.getClass().getDeclaredMethod("getString");
getString.setAccessible(true);
但我不知道如何在doReturn()
内部使用它。