В нем представлены образцы Swagger Core из библиотеки Java. Каждый образец содержит файл Readme, в котором подробно описано, как его запускать и что проверять. Мы добавляем зависимости в проект, конфигурируем настройки и получаем документацию. Сам код из-за этого может стать менее читабельным, документация тоже не будет идеальной. Но задача минимум решена — код задокументирован.
И мы можем получить что-то невразумительное. Вместо методов вашего тестового клиента у вас будут route1, route2, route16. Три года назад картина у нас была следующая. У нас были автоматизаторы тестирования, которые имели достаточно стандартный ручное тестирование api подход и писали автотесты на Apache HTTP-клиенте. И у нас были разработчики, которые писали в основном юнит-тесты, интеграционные тесты. А некоторые вообще не понимали, зачем нужны автотесты, так как считали, что ничего не сломается.
Для того чтобы написать шаблоны, нам нужны переменные. В документации OpenAPI Generator описано, как их получить. Надо просто запустить нашу генерацию с флагом DebugOperations, и в итоге мы получим переменные для операций, которые будем использовать в шаблонах. Когда мы только https://deveducation.com/ всё начинали, мы рассматривали множество клиентов в Swagger Codegen, написанных под разные языки, но ни один нас не устроил. Все эти клиенты очень жёстко привязаны к документации. В них мало точек расширения, и они не рассчитаны на то, что наша спецификация будет меняться.
По факту этот проект уже можно использовать. Но как только вы его начнёте использовать, то поймёте, что что-то идёт не так. Ниже реальный пример, где я использовал генерацию кода.
Для тестировщиков головная боль — именование тестовых методов и тестовых классов. У нас единое наименование на основе OpenAPI-спецификации. Из-за этого единообразия мы пришли к тому, что наши автотесты могут писать все. Их могут писать автоматизаторы тестирования и понимать ручные тестировщики и разработчики.
Например, у есть запрос на запись и возврат, и на post запрос мы хотим сделать обязательными ряд полей. Мы можем красить build в красный цвет и тем самым стимулировать разработчиков писать тесты. Так же выглядят и теги — это группа операций. Мы можем понять, сколько операций покрывается, сколько вообще не покрыты.
Например, у наших спецификаций есть модели. Мы можем попробовать сгенерировать assertions на модели ответов с помощью плагина. Для каждого из методов HTTP Swagger позволяет описать параметры запросов и формат ответов.
Это в том числе нужно для того, чтобы новые члены команды быстрее и проще вовлекались в проект. Я рекомендую добавлять в описание запросов всю информацию, которая туда может только влезть. Указывать ссылку на Сonfluence, где описывается сценарий, прописывать неочевидную логику того, как у вас проверяются поля, в какую таблицу делается запись. С anyOf, oneOf и вы можете указать, например, несколько вариантов тела запроса, которые он может принимать.
Поддерживает большое количество технологий. Посмотреть полный список можно в репозитории Swagger Codegen на GitHub. Документ спецификации OpenAPI использует YAML, но также может быть написан в формате JSON. В 2015 году проект Swagger сделали открытым и передали OpenAPI Initiative.
В стандартном Retrofit-клиенте параметры типизированы, для тестирования это не очень удобно. Нам бы хотелось, чтобы параметры были не типизированы, и мы могли вставить любые параметры, получить ошибку и её валидировать. Также вы получите другие различные проблемы. Например, опечатки, потому что Swagger Annotation пишется руками разработчиков. Опечатки можно поправить — это не проблема.
С его помощью можно создать описания, а затем использовать их с полным набором инструментов для генерации документации. Для конфигурации нужны еще два бина (beans). В них мы описываем название приложения, версию API, добавляем другие важные данные. Посмотреть примеры можно в этом репозитории на GitHub.