【发布时间】:2018-11-24 01:34:15
【问题描述】:
我在 Spring Boot 应用程序中有 @Service,它正在解析文件,然后使用 Spring Data JPA 将其存储到数据库中。我想用改变这个映射的所有逻辑来测试这个解析。因此,为此我需要在测试中将映射存储在 DB 中。
@Service
public class ParsingService {
@Autowired
private StoringInDBRepository storingInDBRepository;
}
@Repository
public interface StoringInDBRepository extends JpaRepository<MyEntity, String> {
问题是在使用注释@SpringBootTest 进行测试期间,我不想加载整个上下文,而只想加载我的 ParsingService。 当我写作时:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ParsingService.class})
public class ParsingServiceTest{
@Test
public void someTest(){
}
}
无法初始化此测试,因为我没有在 @SpringBootTest 注释中加载 StoringInDBRepository。但是我可以做到,因为 StoringInDBRepository 是一个接口。仅当我正在测试存储库层时,根据 javadoc 使用 @DataJpaTest 才是正确的。不推荐使用@DataJpaTest 和@SpringBootTest。
我应该如何测试这些服务? 提前致谢。
【问题讨论】:
-
你可以模拟存储库 bean
-
@akuma8 不,因为那样它们将无法按预期工作。我需要真正的对象将功能。不是嘲笑
标签: java spring spring-boot integration-testing