【发布时间】:2019-08-29 04:57:08
【问题描述】:
我正在尝试使用 JUnit4 对方法进行单元测试。被测方法正在调用另一个私有方法,我想使用 PowerMockito 模拟它。
我的方法如下:
Class MyClass {
public List<String> myMethod(String name) throws IOException
{
... Few lines of code for setting variables
List<String> result = myPrivateMethod(a, b);
... Few more lines of code..
result.addAll(myPrivateMethod(c, d));
return result;
}
private List<String> myPrivateMethod(String a, String b) {
.....
}
}
我测试上述代码的单元测试方法如下:
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class TestClass {
@Test
public void testMyMethod() throws Exception {
MyClass myClass = PowerMockito.spy(new MyClass());
PowerMockito.doReturn(new ArrayList<String>(){{add("temp");}}).when(myClass, "myPrivateMethod", "a", "b");
List<String> list = myClass.myMethod("someName");
assertEquals(list.size(), 1);
}
}
我期待行 PowerMockito.doReturn(new ArrayList(){{add("temp");}}).when(myClass, "myPrivateMethod", "a", "b"); 返回大小为 1 的列表。我验证了执行不会进入私有方法,但我没有得到添加一个值的列表。
上面的单元测试代码有什么问题,为什么我得到 null 而不是 PowerMockito.doReturn() 方法中提到的填充列表?
【问题讨论】:
-
@KavithaKarunakaran 感谢您的评论,但从上面的答案来看,它要求从私有方法执行私有方法和 Mock 对象/方法调用。我正在寻找一个不执行私有方法的选项,只返回一个 List
而不执行它。
标签: java unit-testing junit4 powermockito