如何mock私有方法
时间: 2023-07-16 20:14:55 浏览: 158
在单元测试中,如果需要测试一个包含私有方法的类,可以使用反射来调用私有方法。具体步骤如下:
1.获取类的Class对象,可以使用 Class.forName() 方法或者 .class 语法获取。
2.获取私有方法的 Method 对象,可以使用 Class.getDeclaredMethod() 方法。
3.设置私有方法的访问权限为可访问,可以使用 Method.setAccessible(true) 方法。
4.调用私有方法,可以使用 Method.invoke() 方法。
以下是一个示例代码:
```
public class MyClass {
private int add(int a, int b) {
return a + b;
}
}
public class MyClassTest {
@Test
public void testAdd() throws Exception {
MyClass obj = new MyClass();
Class<?> clazz = obj.getClass();
Method method = clazz.getDeclaredMethod("add", int.class, int.class);
method.setAccessible(true);
int result = (int) method.invoke(obj, 1, 2);
assertEquals(3, result);
}
}
```
在这个示例中,我们使用反射来调用 MyClass 类中的私有方法 add(),并验证其返回值是否正确。注意,这种方式可能会破坏封装性,因此应该谨慎使用。
阅读全文