java - 使用 Controller -> 服务 -> 存储库对 Spring Boot 进行单元测试

标签 java spring spring-boot spring-data-jpa spring-data

我正在尝试使用 Controller 、服务和存储库(SPRING DATA)在 Spring Boot 中应用单元测试,但是当我尝试执行测试时,并向我显示此消息。

Field parameterRepository in ParameterService required a bean of type ParameterRepository that could not be found.

我将@repository放入我的接口(interface)存储库中,但是不起作用。

我将部分代码附加到您的帮助中。

@RunWith(SpringRunner.class)
@WebMvcTest(value = ParameterController.class, secure = false)
@ContextConfiguration(classes = {ParameterController.class, ParameterService.class, ParameterRepository.class})
public class ParameterTest {

@Autowired
private WebTestClient webClient;

@Test
public void getParamterById() {
    this.webClient.get().uri("/parameters/v1").exchange().expectStatus().isOk();
}

}

public interface ParameterRepository  extends MongoRepository<Parameter, ObjectId>{

Optional<Parameter> findByCode(String code);

}

有人知道如何在 Spring 中测试解决这个问题吗?

最佳答案

您的@ContextConfiguration未指向您的@Configutation类。您不需要将 Controller 和服务类传递给 ContextConfiguration。

@ContextConfiguration(classes = {ParameterController.class, ParameterService.class, ParameterRepository.class})
<小时/>

您可以有一个单独的类@TestConfiguration,它将默认扫描并加载当前包和子包中的所有类。

@TestConfiguration
public class MyTestConfiguration {

将此测试配置类传递给您的@ContextConfiguration

@ContextConfiguration(classes={MyTestConfiguration.class})
<小时/>

如果您的测试配置不在包层次结构的顶部 你可以像这样使用@ComponentScan

@ComponentScan({"com.my.package.first","com.my.package.second"})

关于java - 使用 Controller -> 服务 -> 存储库对 Spring Boot 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52827977/

相关文章:

java - ANTLR:解析配置文件

java - Spring Framework 3.0中如何在所有页面显示相同的数据?

java - Spring Boot @ConfigurationProperties 到 map 的 map 或(嵌套 map /MultiKeyMap)

java - 具有 Spring Securing + Hibernate 的 MAVEN Web 应用程序模板

java - 如何使用WebApplicationInitializer依赖项目?

java - 订阅 Spring Metrics channel

java - 在 spring boot 的请求 json 主体中存在可变键值时处理 RequestBody

java - SWTBot 测试中的 SWTException : Why is it thrown in Tycho+Surefire?

java - 从 Java 运行 AppleScript 时出现 "is not allowed for assistive access"错误

Java Apache POI Tab 停止词文档