Python мануфактураJavaDesign Patterns для автоматизаторів

Терміни, нюанси та джерела

Java · Advanced: API-автоматизація · 20:00–40:00

POJO generation і Jackson mapping

POJO описує fields, accessors, equality/hash і string representation. Моделі можна згенерувати з real JSON через jsonschema2pojo або RoboPOJOGenerator, обравши Jackson annotations і, за потреби, Lombok. `@JsonProperty` зв’язує JSON name з Java field, Jackson Databind serialization/deserialization перетворює DTO у request body і response назад у object. `null`, missing field, empty object і empty array — різні contract states і потребують окремих tests.

POJO, Jackson і контролери →

Java · Сесії: AMA та PMP · 23:01–25:36

Access modifiers і зближення мов

Java і C# формально перевіряють `public`, `private` та `protected`, тоді як Python використовує переважно conventions. Водночас суворіші мови скорочують boilerplate, а Python і JavaScript додають type hints та інструменти статичного аналізу. Python annotations допомагають IDE й type checker, але самі по собі не перетворюють Python на статично типізовану мову та не гарантують runtime-перевірку. Їхня користь — ранній зворотний зв’язок і краща навігація по API.

__init__, self, page та принципи ООП →

Java · Додаткові матеріали · 25:35–32:30

Перший JUnit 5 test method

Тест описується як method всередині class і позначається JUnit 5 annotation `@Test`. Важливо вибрати імпорт саме з `org.junit.jupiter.api`, бо IDE може запропонувати однаково названі типи з інших package. Java-класи називаються у PascalCase, methods — у camelCase; блоки обмежуються фігурними дужками, а statements завершуються `;`. IDE formatting і optimize imports прибирають механічні помилки, але не замінюють розуміння структури.

Створення першого Java-проєкту та тесту →

Java · Advanced: API-автоматизація · 40:00–1:00: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 не виконує свою роль.

Кодогенерація через OpenAPI Generator →

Java · Advanced: API-автоматизація · 1:30:00–1:40: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.

Кодогенерація через OpenAPI Generator →

Java · Advanced: API-автоматизація · 1:50:00–1:55:08

Request DTO і response DTO

Одна model для request і response придатна лише тоді, коли wire shapes справді збігаються. Якщо response має generated id/timestamps або request забороняє server-owned fields, потрібні separate `PetRequest` і `PetResponse`. Невдала deserialization найчастіше означає incorrect DTO shape/type або Jackson configuration. Виправлення — звірити модель з real JSON/OpenAPI contract, а не додавати random annotations, доки exception не зникне.

POJO, Jackson і контролери →
Запитати в чаті про «annotations» →