使用MockBean来模拟SessionFactory

问题描述 投票:0回答:1

我有一个 DAO impl 类,我正在尝试使用 testng 编写单元测试。我的类有一个自动连接到其中的 SessionFactory,这就是我在测试类中使用 MockBean 注释的原因。在我想要测试的实际课程中,我有以下代码行:

 Criteria criteria = sessionFactory.getCurrentSession().createCriteria(ArchiveItem.class);

为了运行测试,我试图存根 SessionFactory 的行为。目前,我什至无法在 getCurrentSession 方法上创建存根。

这是我当前的测试课:

@ContextConfiguration(locations="classpath:test-context.xml")
public class MyDAOImplTest extends AbstractTestNGSpringContextTests {

    @Mock
    private Session session;

    @Mock
    private Criteria criteria;

    @MockBean
    SessionFactory sessionFactory;

    @Autowired
    private MyDAOImpl myDaoImpl;

    @BeforeMethod
    public void setup(){
        MockitoAnnotations.initMocks(this);
        Mockito.when(sessionFactory.getCurrentSession()).thenReturn(session);
    }

    @Test
    public void contextLoad(){
        System.out.println("Context Loads");

    }
}

但是,当我运行这个时,我得到:

java.lang.NullPointerException

这似乎来自以下代码行:

Mockito.when(sessionFactory.getCurrentSession()).thenReturn(session);
java spring-boot unit-testing mockito spring-bean
1个回答
0
投票

谢谢大家的帮助。我发现这个问题与 testng 需要 @Autowired 注释和 @MockBean 有关: @MockBean 注入正确,但测试类上为空值

另外,我使用的是mockito-all,我必须升级到mockito-core。我正在使用 Java 8,我发现版本 3.2.4 对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.