@WebMvcTest给出'错误创建名称为'的bean春季启动测试中不同服务的错误

时间:2017-09-12 07:01:47

标签: java spring spring-mvc spring-boot spring-boot-test

我正在尝试为我的春季启动应用程序编写测试。对于独立控制器测试,我使用了@WebMvcTest但遇到了一些问题。这是代码的基本结构。

  

UserController具有自动装配的UserService类。

     

LibraryController具有自动装配的LibraryService类。

以下是UserControllerTest ::

的代码
@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerTest {
   @Autowired
   private MockMvc mockMvc;

   @MockBean
    private UserService userServiceMock;

   @Test
   public void someTest(){}

}

在UserControllerTest中运行代码时出错:

  

引起:   org.springframework.beans.factory.UnsatisfiedDependencyException:   创建名称为' libraryController的bean时出错':不满意   通过字段“库服务”表达的依赖性&#39 ;;嵌套   例外是org.springframework.beans.factory

根据我的理解,由于我们在@WebMvcTest注释中指定了UserController,我们只需要模拟该控制器所需的依赖关系。但是它要求libraryService与usercontroller没有链接。

是的,如果我们在测试中包含库服务作为MockBean,那么它工作正常。但如果是这种情况,我们必须在程序扩展时模拟每个自动装配的bean。

任何解释都表示赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:2)

可能您已经在主类上定义了以下注释之一:@ ComponentSacn,@ EnableJpaRepositores和@EntityScan。

通过将@EnableJpaRepositores放置在主类上,表明您必须始终启用JPA仓库,无论您要测试的是哪个特定功能。这同样适用于@ComponentScan和@EntityScan。