Я сталкиваюсь с проблемой с Spring AutoRest Docs. Кажется, это происходит из этого кода
.alwaysDo<DefaultMockMvcBuilder>(JacksonResultHandlers.prepareJackson(objectMapper))
Полная конфигурация:
mockMvc = MockMvcBuilders
.webAppContextSetup(webApplicationContext)
.alwaysDo<DefaultMockMvcBuilder>(JacksonResultHandlers.prepareJackson(objectMapper))
.alwaysDo<DefaultMockMvcBuilder>(document("{class-name}/{method-name}",
Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
Preprocessors.preprocessResponse(Preprocessors.prettyPrint())))
.apply<DefaultMockMvcBuilder>(documentationConfiguration(this.restDocumentation)
.uris()
.withScheme("https")
.withHost("localhost")
.and().snippets()
.withDefaults(CliDocumentation.curlRequest(),
HttpDocumentation.httpRequest(),
HttpDocumentation.httpResponse(),
AutoDocumentation.requestFields()
.failOnUndocumentedFields(true),
AutoDocumentation.responseFields()
.failOnUndocumentedFields(true),
AutoDocumentation.pathParameters(),
AutoDocumentation.requestParameters(),
AutoDocumentation.description(),
AutoDocumentation.methodAndPath(),
AutoDocumentation.section(),
AutoDocumentation.links()))
.build()
Я немного настроил джексон, и авторесту это, похоже, не нравится. Когда я ввожу свой objectMapper
, я получаю следующие предупреждения:
No Javadoc found for class java.lang.Object
No Javadoc found for class java.io.Serializable
No description found for constraint com.domain.CLASS: Can't find resource for bundle java.util.PropertyResourceBundle, key com.domain.CLASS.description
Я пытался ввести другие способы доступа к объектному картографу, включая
MappingJackson2HttpMessageConverter
ObjectMapperResolver
Я также попытался запустить новое приложение Spring Boot и не обнаружил ошибок. Однако, если prepareJackson
удалить, предупреждений больше не будет, в автоматически сгенерированных документах нет данных.
Я застрял в этой проблеме довольно долгое время и не знаю, как ее решить. Мы будем очень признательны за любые рекомендации.
Правильно, я выполнил эти шаги, и на всех моих классах/контроллерах есть Javadocs. Я также заметил, что с 2.0.5 -> 2.0.3 исчезает сообщение «Нет описания для сообщения об ограничении» для классов немного... Сегодня я попытаюсь создать демонстрационный проект и отвечу здесь.
Я видел такое же поведение сегодня после обновления auto-restdocs в проекте с 1.0.10 до 2.0.5. Я заметил, что классы, содержащиеся в предупреждениях, не являются классами ограничений (аннотаций). Вместо этого они являются модельными классами. На первый взгляд это выглядит как небольшая ошибка в spring-auto-restdocs или я что-то пропустил?
@FlorianBenz, вы также можете найти эти предупреждения в своем журнале travis: travis-ci.org/ScaCap/spring-auto-restdocs/jobs/544592362#L2367
Я рад, что я не один это вижу! Это заставляет мои тесты длиться вечно. @FlorianBenz есть новости по этому поводу?
Я посмотрю и посмотрю, печатаем ли мы ненужные предупреждения. У нас всегда были предупреждения об отсутствии Javadoc. Предупреждения либо означают, что Javadoc не найден, либо что в настройках что-то не так. Во многих случаях Javadoc либо отсутствует преднамеренно, либо не извлекается, потому что это сторонний код. Я понимаю, что это может ввести в заблуждение и раздражать. Возможные решения: 1) изменить уровень журнала на информацию или 2) вообще не регистрировать это. @TylerBobella Вы действительно уверены, что печать предупреждений замедляет ваш тест?
Это действительно тот случай, когда в последнем выпуске больше предупреждений «Описание ограничения не найдено». Я создал задачу и начал PR github.com/ScaCap/spring-auto-restdocs/issues/336
Быстрое обновление по этому поводу.
Флориан написал об этом на GitHub, и в версии 2.0.6 все исправлено. Так что просто используйте 2.0.6, и все будет хорошо.
См. https://github.com/ScaCap/spring-auto-restdocs/issues/336
Спасибо Флориану и команде Auto Rest Doc!
Первые два предупреждения говорят о том, что для двух классов в вашем проекте нет Javadoc. Это ожидаемо, поскольку эти классы являются частью стандартной библиотеки, а не вашего проекта. Последнее предупреждение говорит о том, что нет описания ограничения CLASS. Ничто из этого не указывает на какие-либо проблемы с ObjectMapper. Как выглядят ваши тесты? Вы выполнили шаги в scacap.github.io/spring-auto-restdocs/#gettingstarted-usage ?