Я использовал для модульного тестирования мои классы контроллера, как и любой другой нормальный класс Java.Я имею в виду без использования Spring's MockMvc.Но потом я понял, что таким образом я не смогу быть уверенным, что я правильно настроил конфигурацию MVC.Поэтому, если у меня есть контроллер, подобный этому:
@Restcontroller
@RequestMapping("/cars")
public class CarController{
private CarService carService;
public CarController (CarService service){this.carService = service};
@GetMapping
public List<Car> getCar(@RequestParam("filter") String filter){
if(filter!=null && !filter.trim().equal("")){
//omitted for brevity
}
}
}
, и если я тестирую его метод getCar
напрямую, даже если тест пройден, это не будет означать, что с моим контроллером все в порядке.Поэтому вместо модульного тестирования я начал проводить интеграционное тестирование.Примерно так:
mockMvc.perform(get("/v1/cars?filter = Honda")).... bla bla bla
В последнее время возник вопрос, стоит ли нам сначала тестировать модуль, а остальные тестировать контроллеры интеграции.На первый взгляд, мне кажется, что интеграционный тест, в конце концов, проверяет правильность поведения контроллера.Но с другой стороны, насколько хорошо это полагаться только на интеграционные тесты.