带有控制器的单元测试Spring Boot->服务->存储库

时间:2018-10-16 04:31:42

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

我正在尝试使用控制器,服务和存储库(SPRING DATA)在春季启动中应用单元测试,但是当我尝试执行测试并向我显示此消息时。

  

ParameterService中的field parameterRepository需要一个找不到ParameterRepository类型的Bean。

我将@repository放在界面存储库中,但是不起作用。

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

@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中通过测试解决此问题吗?

1 个答案:

答案 0 :(得分:0)

您的@ContextConfiguration没有指向您的@Configutation类。您无需将控制器和服务类传递给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"})
相关问题