【发布时间】:2016-03-17 12:34:34
【问题描述】:
我这里有我的问题的简化版本。 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() 中使用它。
【问题讨论】:
-
为什么你要测试的东西和你测试的包不在同一个包里?这可能是您要纠正的第一件事。
标签: java unit-testing junit mockito