Конспект і таймкоди
0:00
Від manual models до specification-driven generation
Без API docs можна згенерувати POJO з observed JSON, але це лише semi-automatic recovery. З OpenAPI specification можна відтворювано генерувати models і API client через Gradle/Maven/CLI.
Specification містить metadata, servers, paths, operations, schemas і response/error definitions. Swagger UI — лише projection цієї специфікації; code generator працює з machine-readable JSON/YAML.
10:00
Gradle task: input, output і generator config
В build configuration задаються specification URL/file, output directory, generator/language, package names і config options. Окрема task спочатку отримує spec, потім генерує sources.
Вихід кладеться в build/, а не редагується вручну. Так generator залишається build product, а не другим source of truth.
20:00
Generated source sets і clean builds
Gradle і IDE мають знати, що generated directory є Java source root. IDE indexing може вимагати explicit generated-source marking, але command-line build не має залежати від manual IDE action.
clean видаляє generated output, а build відновлює його зі specification. Це перевіряє, що repository не приховує uncommitted/manual fixes generated code.
30:00
Вибір Java client library
Java generator може будувати client на різних HTTP libraries. Відео експериментує з RestTemplate та RestAssured, пояснюючи, що library choice впливає на generated signatures, exceptions і dependencies.
Немає універсального найкращого client. Для tests важливі controllable requests, raw negative responses, logging/masking і compatibility з project stack.
40:00
Version alignment і generator failures
Demo показує real failures: missing generated client, incompatible Spring types, Jackson/Gson annotations, date/time mappings і auxiliary dependencies. Проблема не завжди у spec — generator version, selected library і dependency graph мають суміщатися.
Потрібно pin generator version, зберігати config у repository і перевіряти clean generation в CI. Якщо generated code вимагає постійних manual edits, generator не виконує свою роль.
1:00:00
Models-only generation і API product thinking
Після проблем з full client відео показує простіший варіант: generate models, а transport залишити під контролем test code. Це зберігає schema checking без складного generated client runtime.
Актуальна specification також робить API придатним для external consumers. Це не лише testing concern, а product capability: onboarding, SDK generation і integration cost.
Generated success client не завжди зручний для negative tests. API має повертати standardized error model з code, message і diagnostic fields, щоб frontend і tests могли відрізнити конкретні failures в межах одного HTTP status.
Test-generated correlation/trace ID передається у header, логується і додається до report. Тоді розробник знаходить повний distributed trace для failed test, а не шукає за приблизним timestamp.
1:30:00
IntelliJ Live Templates як local code generation
Live Templates генерують repetitive test annotations, Allure steps і method skeletons. Вони доречні для stable project conventions, а не для business logic.
Шаблони можна зберігати в project settings і розділяти з командою. Якщо convention змінилася, template також має змінитися; generated boilerplate не слід розмножувати без review.
1:40:00
Full client чи models-only: ціна володіння
Фінальний вибір залежить від company culture і delivery pipeline. Full generated client зменшує manual code, але вимагає generator upgrades, artifact publication, versioning і failure recovery.
Models-only часто дає кращий баланс для test project: schema types генеруються, request/response handling залишається explicit. Повний client варто додавати, коли його maintenance cost нижчий за duplicated manual clients.