无法执行DataJpaTest

时间:2019-02-01 14:53:19

标签: spring spring-boot testing integration-testing

我有一个名为spring-data-jpa的{​​{1}}存储库。我的TagRepository版本是2.1.2。我将H2依赖项与运行时范围一起使用,并且打算将其用于应用程序和集成测试。我想为TagRepository写一个spring-boot。我已经编写了以下代码:

DataJpaTest

但是,当我执行测试时,它说应用程序无法启动,并且出现以下错误:

@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@DataJpaTest
@ContextConfiguration(classes={TagRepository.class})
public class TagRepositoryTest {

    @Autowired
    private TestEntityManager testEntityManager;

    @Autowired
    private TagRepository tagRepository;

    @Test
    public void findByTagTest() {
        Tag tag = new Tag("java");
        testEntityManager.persistAndFlush(tag);

        Optional<Tag> optionalTag = tagRepository.findByTag(tag.getTag());
        if(!optionalTag.isPresent()) {
            fail("Tag not found hence test failed");
        }

        assertThat(optionalTag.get()).isEqualTo(tag);
    }
}

测试类本身与jpa存储库位于不同的包中。

1 个答案:

答案 0 :(得分:1)

只需删除

@ContextConfiguration(classes={TagRepository.class})
测试中的

它用于传递自定义@Configuration而不是常规bean。

UPD : 当数据jpa测试和要测试的存储库位于不同的软件包中时,springRunner需要一些提示才能从另一个地方扫描类。通过

指出应用程序类
@ContextConfiguration(classes={SpringBootApplication.class})

将扩展组件扫描范围,并允许测试环境拾取其他bean。