Java @WebMvcTest出于某种原因创建多个控制器

Java @WebMvcTest出于某种原因创建多个控制器,java,spring,unit-testing,testing,junit,Java,Spring,Unit Testing,Testing,Junit,我试图用@WebMvcTest创建一个控制器测试,据我所知,当我在测试类中添加@WebMvcTestClientController.class注释时,它不应该创建很多bean,而应该创建这个控制器需要的bean 我正在用@MockBean模拟这个控制器所需的bean,但不知何故它失败了,出现了一个例外,即没有另一个服务的“合格bean”,该服务不是这个控制器所需的,而是另一个控制器所需的 所以这个测试失败了: @RunWith(SpringRunner.class) @WebMvcTest(c

我试图用@WebMvcTest创建一个控制器测试,据我所知,当我在测试类中添加@WebMvcTestClientController.class注释时,它不应该创建很多bean,而应该创建这个控制器需要的bean

我正在用@MockBean模拟这个控制器所需的bean,但不知何故它失败了,出现了一个例外,即没有另一个服务的“合格bean”,该服务不是这个控制器所需的,而是另一个控制器所需的

所以这个测试失败了:

@RunWith(SpringRunner.class)
@WebMvcTest(controllers = ClientController.class)
public class ClientControllerTest {

    @MockBean
    ClientService clientService;

    @Test
    public void getClient() {
        assertEquals(1,1);
    }
}

我已经创建了一个相同版本2.0.1的空Spring启动项目,并尝试在那里创建测试。它工作得很好


所以我的问题可能是因为我的项目有很多依赖关系,但在这种情况下,可能有一些常见的做法在哪里可以找到?什么会弄乱@WebMvcTest逻辑?

我找到了一个解决方法。不是使用@WebMvcTest和@MockBean,而是手动创建所有内容:

//@WebMvcTest(ClientController.class)
@RunWith(SpringRunner.class)
public class ClientControllerTest {

    private MockMvc mockMvc;
    @Mock
    ClientService clientService;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.standaloneSetup(
                new ClientController(clientService)
        ).build();
}

与Spring 1.4.X和Spring Boot 2.X配合使用时出现了不同的异常情况,但仍然没有解释@WebMvcTest为什么不起作用