[嘲笑QueryBuilder时为NullPointerException

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

问题:

我正在尝试使用Mockito创建测试。此测试将模拟QueryBuilder,并尝试验证是否一切正常。但是我得到了[[“ java.lang.NullPointerException”。似乎尚未初始化,但是我看不到它是什么。

代码:

@RunWith(MockitoJUnitRunner.StrictStubs.class) public class AcademicJPADAOTest { @Mock private EntityManager entityManager; @Mock private CriteriaBuilder cb; @Mock private CriteriaQuery<Academic> cq; @Mock private Root<Academic> root; @InjectMocks AcademicJPADAO academicjpadao; private String passwdcode = "83997689-22b6-4a7e-a801"; @Test public void retrieveByPasswordCodeTest() throws PersistentObjectNotFoundException, MultiplePersistentObjectsFoundException { Academic academic = new Academic(); when(entityManager.getCriteriaBuilder()).thenReturn(cb); when(cb.createQuery(Academic.class)).thenReturn(cq); when(cq.from(Academic.class)).thenReturn(root); when(cq.where(cb.equal(root.get(Academic_.passwordCode), passwdcode))).thenReturn(cq); when(academicjpadao.getEntityManager().createQuery(cq).getSingleResult()).thenReturn(academic); academicjpadao.retrieveByPasswordCode(passwdcode); verify(entityManager, times(1)).getCriteriaBuilder(); } }

行错误:

when(academicjpadao.getEntityManager().createQuery(cq).getSingleResult()).thenReturn(academic);
java nullpointerexception mocking mockito query-builder
1个回答
0
投票
也许您的academicjpadao在此部分中未正确注入:

@InjectMocks AcademicJPADAO academicjpadao;

因此,请使用MockitoAnnotations.initMocks来启动@Mock@InjectMocks对象。因此,您必须将此方法添加到类中:

@Before public void setup() { MockitoAnnotations.initMocks(this); }

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