@DataJpaTest 中的存储库初始化为 null

我正在尝试为 Spring Boot 应用程序中的存储库编写一些测试,但是存储库自动装配为null。测试类的代码如下:


package jpa.project.repo;


import org.junit.Assert;

import org.junit.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;

import org.springframework.test.context.ContextConfiguration;


import jpa.project.entity.Person;


@EnableAutoConfiguration

@ContextConfiguration(classes = PersonRepo.class)

@DataJpaTest

public class PersonRepoTest {


    @Autowired

    private PersonRepo personRepoTest;


    @Test

    public void testPersonRepo() throws Exception {


        Person toSave = new Person();

        toSave.setPersonId(23);


        if (personRepoTest == null) {

            System.out.println("NULL REPO FOUND");

        }


        personRepoTest.save(toSave);


        Person getFromDb = personRepoTest.findOne(23);


        Assert.assertTrue(getFromDb.getPersonId() == 23);

    }

}

当我在 Eclipse 中将此文件作为 JUnit 测试运行时,打印语句确实被打印出来,这确认了随后出现的空指针异常。我所有的测试都在与主应用程序相同的包中,但这些包在 src/test/java 下。我尝试对包装名称进行一些更改,但这并没有帮助,所以我现在不知道问题出在哪里。为什么 repo 被初始化为 null?


子衿沉夜
浏览 173回答 2
2回答

有只小跳蛙

这是使用@DataJpaTest 和 TestEntityManager 进行单元测试的工作示例:PersonRepo 扩展 JpaRepository 并具有 @Repository 注释我在我的项目中使用这种方法,如果您的所有配置都有效并且应用程序可以正常运行,则测试将通过。@RunWith(SpringRunner.class)@DataJpaTestpublic class RepositoryTest {    @Autowired    TestEntityManager entityManager;    @Autowired    PersonRepo sut;    @Test    public void some_test() {        Person toSave = new Person();        toSave.setPersonId(23);        entityManager.persistAndFlush(toSave);        Person getFromDb = sut.findOne(23);        Assert.assertTrue(getFromDb.getPersonId() == 23);    } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java