Java 模拟休眠会话

Java 模拟休眠会话,java,hibernate,session,mockito,powermock,Java,Hibernate,Session,Mockito,Powermock,我试图模拟休眠会话。这是我尝试的代码片段: @Before public void setUp() { campaignModel = DraftTestHelper.buildDraftModel(); if(sessionFactory != null) { System.out.println("Session Factory not null"); } else System.out.println("Session Fac

我试图模拟休眠会话。这是我尝试的代码片段:

@Before
public void setUp() {
    campaignModel = DraftTestHelper.buildDraftModel();
    if(sessionFactory != null) {
        System.out.println("Session Factory not null");
    }
    else
        System.out.println("Session Factory is null");
    session = sessionFactory.getCurrentSession();

    if(session != null) {
        System.out.print("Not null");
    }
    else 
        System.out.println("Null");

}
模拟代码:

@Mock
SessionFactory sessionFactory;

@InjectMocks
DraftCampaignModelBuilder draftBuilder;  

private DraftCampaignModel campaignModel;
private Session session;
根据控制台,会话工厂不为空。但hibernate会话为空。有人能帮忙吗


谢谢

我想你需要在方法之前用你的
@写下这个:

when(sessionFactory.getCurrentSession()).thenReturn(hibernateSession);
e、 g


请同时提供您的模拟代码。谢谢。我补充道。请仔细看看,这样您就不会模仿
getCurrentSession()
方法。我认为你需要模拟这个方法来返回一些东西。你应该模拟你的代码,而不是第三方代码。Peter,你能解释更多吗?那我们该怎么做呢?是的。。一种更简单的方法是只在类级别@Mock。谢谢你的帮助!!!!!我会在几分钟内接受答案。
@Mock
private HibernateSession hibernateSession;

@Before
public void setUp() {
    when(sessionFactory.getCurrentSession()).thenReturn(hibernateSession);

    campaignModel = DraftTestHelper.buildDraftModel();
    if(sessionFactory == null) {
        System.out.println("Session Factory is null");
    }
    else {
        System.out.println("Session Factory is not null");
        session = sessionFactory.getCurrentSession();

        if(session != null) {
            System.out.print("Session is not null");
        }
        else {
            System.out.println("Session is null");
        }
    }
}