Я написал пару тестов JUnit, чтобы проверить функциональность REST. Поскольку я только хочу протестировать REST (а не базу данных, логику домена, ..), я сделал заглушки с фиктивными данными, что означает остальную часть бэкэнда.Как динамически загружать разные классы для тестов JUnit?
[EDIT] Например, я хочу протестировать/клиенты/все . Запрос GET будет отвечать арраисту, содержащему все имена.
I поэтому использование MockMV.
this.mockMvc.perform(get("/customers/all").accept("application/json"))
.andExpect(status().isOk())
.andExpect(jsonPath("$").isNotEmpty())
.andExpect(jsonPath("$[0].name", is("John")));
Когда вы обычно выполняете запрос GET в сторону/клиентов/все запросы будут отправлены в базу данных. Теперь, чтобы проверить мой контроллер REST, я сделал заглушку, которая отвечает GET/customers/all с простым arraylist, содержащим только мое имя (как вы можете видеть в тесте). Когда я тестирую этот локальный, я просто заменяю настоящий класс этим заглушкой. Как это делается динамически?
Контроллеры испытываются, как и любой другой класс, за исключением того, что они, как правило, немой и будет делегировать большое количество работы других классов, за исключением , То, что вы хотите сделать, состоит в том, чтобы издеваться над всеми другими классами, участвующими в обработке, и в связи с контроллером. Поэтому, чтобы ответить на ваш вопрос, я бы сказал, что мне кажется, что ваш подход кажется неправильным. Не могли бы вы прояснить, о чем вы говорите? – LoreV
Я использую MockMVC для тестирования моего REST. Если я не использую заглушку для остальной части моего бэкенда, каждый тест, который я делаю с MockMVC, будет выполнять запрос к остальной части моего бэкэнда, не так ли? – Dai
MockMvc используется для тестов интеграции, также называемых End2End. Они предназначены для тестирования более чем единицы вашего кода. См. Http://www.petrikainulainen.net/programming/spring-framework/integration-testing-of-spring-mvc-applications-configuration/. Однако после вашего вопроса я рекомендовал бы использовать Mockito для создания модульных тестов для вашего контроллера, прежде чем продолжить работу с инфраструктурой интеграции MockMVC. – LoreV