我有一个私有字段
类public class HibernateSessionFactoryManager{
private SessionFactory sessionFactory;
}
现在我想使用private字段对某个方法进行单元测试。所以我试图使用java 反射访问私有字段。
try {
Field field = HibernateSessionFactoryManager.class.getDeclaredField("sessionFactory");
field.setAccessible(true);
//field.set
SessionFactory sessionFactory = (SessionFactory) field.get(manager);
} catch (NoSuchFieldException e) {
System.out.println("no such");
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
I am getting
java.lang.NoSuchFieldException: sessionFactory at java.lang.Class.getField(Class.java:1584)
我不知道我犯了什么错误。
对于那些在Mockito中遇到类似问题的人:当使用class.getDeclaredField()
设置私有字段时,要设置私有字段的对象必须直接使用new
实例化,而不是通过调用Mockito的mock()
。