简体   繁体   English

当 mocking 为 QueryBuilder 时出现 NullPointerException

[英]NullPointerException when mocking a QueryBuilder

Problem:问题:

I'm trying to create a test, using Mockito.我正在尝试使用 Mockito 创建一个测试。 This test Mocks a QueryBuilder and try to verify if everything is ok.此测试模拟 QueryBuilder 并尝试验证一切是否正常。 But I am getting "java.lang.NullPointerException" .但我得到了"java.lang.NullPointerException" It seems like something hasn't been initialized, but i can't see what it is.似乎某些东西尚未初始化,但我看不到它是什么。

Code:代码:

@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();

    }
}

Line error:线路错误:

when(academicjpadao.getEntityManager().createQuery(cq).getSingleResult()).thenReturn(academic);

Maybe your academicjpadao isn't injected correctly in this part:也许您的academicjpadao在这部分没有正确注入:

 @InjectMocks
 AcademicJPADAO academicjpadao;

so Use MockitoAnnotations.initMocks to initiate the @Mock and @InjectMocks objects.so you have to add to your class this method:所以使用MockitoAnnotations.initMocks来启动@Mock@InjectMocks对象。所以你必须添加到你的 class 这个方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 模拟控制器类时出现NullPointerException - NullPointerException when mocking controller class 模拟存储库 JUnit 时出现 NullPointerException - NullPointerException when mocking repository JUnit 在 SpringBoot API 中测试时 controller 上出现 NullPointerException - Mocking - NullPointerException on controller when testing in SpringBoot API - Mocking 当使用原始参数模拟方法时,Mockito中的NullPointerException - NullPointerException in Mockito when mocking method with primitive argument Mockito-模拟服务时抛出nullpointerException - Mockito - throws nullpointerException when mocking a service NockPointerException当Mockito嘲笑ObjectOutputStream.writeObject吗? - NullPointerException when Mockito mocking ObjectOutputStream.writeObject? 当 controller 中的 mocking 时,总是在数组列表中返回 NullPointerException - Always return NullPointerException in array list when mocking in controller 使用Mockito模拟具有Pageable和Slice接口的数据库调用时,出现NullPointerException - NullPointerException when mocking a DB call with Pageable and Slice Interfaces with Mockito NullpointerException mocking 测试 - NullpointerException mocking the test 模拟自动装配的bean会引发NullPointerException - Mocking a autowired bean throws a NullPointerException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM