@WebMvcTest по какой-то причине создает более одного контроллера

Я пытаюсь создать тест контроллера с @WebMvcTest, и, как я понимаю, когда я помещаю аннотацию @WebMvcTest(ClientController.класс) тестового класса, он не должен создавать много bean-компонентов, а только те, которые требуются этому контроллеру.

Я издеваюсь над bean-компонентом, который требуется этому контроллеру с @MockBean, но почему-то он терпит неудачу, за исключением того, что есть «Нет квалификационного компонента» другой службы, которая не требуется этим контроллером, а другим.

Итак, этот тест не работает:

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

    @MockBean
    ClientService clientService;

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

}

Я создал пустой проект Spring Boot той же версии (2.0.1) и попытался создать там тест. Это сработало отлично.

Итак, моя проблема может быть из-за зависимостей, которых много в моем проекте, но, может быть, есть какая-то общепринятая практика, где искать в этой ситуации? Что может испортить логику @WebMvcTest?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
334
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел обходной путь. Не использовать @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 не работает

я столкнулся с той же проблемой в данный момент .... спасибо за обходной путь

Ditscheridou 29.04.2020 15:34

Другие вопросы по теме