[嘲笑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

创建knex queryBuilder并稍后执行

在 Doctrine DBAL 中重用 QueryBuilder

TYPO3 QueryBuilder - 如何查找用户的最新记录?

学说:QueryBuilder 存在的地方