[嘲笑QueryBuilder时为NullPointerException
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[嘲笑QueryBuilder时为NullPointerException相关的知识,希望对你有一定的参考价值。
问题:
我正在尝试使用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);
答案
也许您的academicjpadao
在此部分中未正确注入: @InjectMocks
AcademicJPADAO academicjpadao;
因此,请使用MockitoAnnotations.initMocks
来启动@Mock
和@InjectMocks
对象。因此,您必须将此方法添加到类中:
@Before public void setup() { MockitoAnnotations.initMocks(this); }
以上是关于[嘲笑QueryBuilder时为NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章
学说:ORM QueryBuilder 或 DBAL QueryBuilder
ORMLite QueryBuilder.orderByRaw(String, SelectArg) 忽略 QueryBuilder.queryRaw() 上的 SelectArg
在 Doctrine DBAL 中重用 QueryBuilder