我有一个名为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存储库位于不同的包中。
答案 0 :(得分:1)
只需删除
@ContextConfiguration(classes={TagRepository.class})
测试中的。
它用于传递自定义@Configuration
而不是常规bean。
UPD : 当数据jpa测试和要测试的存储库位于不同的软件包中时,springRunner需要一些提示才能从另一个地方扫描类。通过
指出应用程序类@ContextConfiguration(classes={SpringBootApplication.class})
将扩展组件扫描范围,并允许测试环境拾取其他bean。