我正在尝试使用控制器,服务和存储库(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中通过测试解决此问题吗?
答案 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"})