gpt4 book ai didi

java - 如何使用 Spring Boot 编写集成/系统测试以使用存储库测试服务

转载 作者:行者123 更新时间:2023-12-02 00:33:24 25 4
gpt4 key购买 nike

我在 Spring Boot 应用程序中有 @Service,它正在解析文件,然后使用 Spring Data JPA 将其存储到数据库中。我想用更改此映射的所有逻辑来测试此解析。因此,为此我需要在测试中将映射存储在数据库中。

@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 是一个接口(interface)。只有在我测试存储库层时,根据 javadoc 使用 @DataJpaTest 才是正确的。不推荐使用@DataJpaTest 和@SpringBootTest。

我应该如何测试此类服务?提前致谢。

最佳答案

因此,经过所有调查后,我找到了几个解决方案。我选择使用

启用存储库和服务
@SpringBootTest(classes = {ParsingService.class})
@EnableJpaRepositories(basePackages = "com.my.repository")
@EntityScan("com.my.entity")
@AutoConfigureDataJpa

这是一个解决方法。而且我认为这不是最好的。另一种解决方案是创建一个 @TestConfiguration ,它将返回您的服务,并且全部使用 @DataJpaTest 注释来启用存储库类。在这种情况下,您应该使用@SpringBootTest 注释

关于java - 如何使用 Spring Boot 编写集成/系统测试以使用存储库测试服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50854676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com