我这里有我的问题的简化版本。 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() 调用。由于该方法受到保护并且我的测试类位于不同的包中,因此我无法使用doReturn(...).when(classUnderTest).getString()
。问题是,我监视 B 类。所以我不能使用mock(new B(), Mockito.CALLS_REAL_METHODS)
.
我尝试通过反射获取受保护的方法:
Method getString = classUnderTest.getClass().getDeclaredMethod("getString");
getString.setAccessible(true);
但我不知道如何在里面使用它doReturn()
.
您可以使用“覆盖和子类”
B b = new B() {
@Override
protected String getString() {
return "FAKE VALUE FOR TESTING PURPOSES";
};
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)