У меня есть модульный тест, который проверяет запрос на получение с параметром TimeStamp.
UT имитирует запрос с текущим TimeStemp в String.
Timestamp myTimeStamp = new Timestamp(Calendar.getInstance().getTimeInMillis());
MockHttpServletRequestBuilder request =get(REST_PATH).param("horarioFim", mytimeStamp.toString());
В моем контроллере у меня есть
@RequestMapping(method = GET)
public Iterable<AuditVersionModel> search(@RequestParam(required = false) Timestamp horarioFim)
TimeStamp импортируется из java. sql .TimeStamp
Тест не пройден, и у меня есть эта информация.
MockHttpServletResponse:
Status = 500
Error message = null
Headers = {Content-Type=[application/json;charset=UTF-8]}
Content type = application/json;charset=UTF-8
Body = {"timestamp":"2020-05-07T23:58:48.298+0000","status":999,"error":"None","message":"Failed to convert value of type 'java.lang.String' to required type 'java.sql.Timestamp'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.sql.Timestamp] for value '2020-05-07 20:58:48.201'; nested exception is java.lang.IllegalArgumentException: Invalid format: \"2020-05-07 20:58:48.201\" is malformed at \" 20:58:48.201\""}
Forwarded URL = null
Redirected URL = null
Cookies = []
Я безуспешно пытался использовать @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
и другие варианты, это всегда одна и та же ошибка.
OBS1: Этот проект представляет собой миграцию со Spring Boot 1.5 на 2.0, код упрощен. OBS2: это устаревшая система, на данный момент проверка - единственный способ проверить запрос.