java反射访问私有字段抛出NoSuchFieldException,即使该字段存在



我有一个私有字段

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()