Skip to content

Latest commit

 

History

History
 
 

state

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Домашнее задание к занятию «Объекты с внутренним состоянием, управление состоянием при тестировании»

В качестве результата пришлите ссылки на ваши GitHub-проекты в личном кабинете студента на сайте netology.ru.

Все задачи этого занятия можно делать в одном репозитории.

Важно: если у вас что-то не получилось, то оформляйте Issue по установленным правилам.

Вы можете делать все задачи этого занятия в одном репозитории (если делаете их последовательно).

Как сдавать задачи

  1. Инициализируйте на своём компьютере пустой Git-репозиторий
  2. Добавьте в него готовый файл .gitignore
  3. Добавьте в этот же каталог необходимые файлы
  4. Сделайте необходимые коммиты
  5. Создайте публичный репозиторий на GitHub и свяжите свой локальный репозиторий с удалённым
  6. Сделайте пуш (удостоверьтесь, что ваш код появился на GitHub)
  7. Ссылку на ваш проект отправьте в личном кабинете на сайте netology.ru
  8. Задачи, отмеченные, как необязательные, можно не сдавать, это не повлияет на получение зачета (в этом ДЗ все задачи являются обязательными)

Задача №1 - "Радиоман" новая версия

Легенда

Проект "Умный дом" развивается и было решено улучшить часть, отвечающую за Радио.

Что нужно сделать: внедрить изменения в сам класс и тесты.

Как это сделать:

  1. Создайте в Git новую ветку: flexible (лучше брать проект своей предыдущей ДЗ, в который уже подключен CI и нужные плагины)
  2. Модифицируйте тесты под новые требования: добавить/изменить/удалить (проверьте, что тесты не компилируются или просто падают, т.к. старый код не соответствует новым требованиям)
  3. Внесите изменения в код (удостоверяетесь, что тесты теперь проходят)
  4. Пушите всё на Github
  5. Делаете Pull Request
  6. Удостоверьтесь, что все тесты в CI запускаются на Pull Request и проходят

Ссылку на Pull Request пришлите в качестве результата ДЗ.

Требования к работе с радиостанциями:

  1. Можно задавать количество радиостанций при создании объекта (по умолчанию - 10)
  2. Номер текущей радиостанции изменяется в пределах от 0 до количества радиостанций, указанных при создании (см. п.1)
  3. Если текущая радиостанция - максимальная, и клиент нажал на кнопку next (следующая) на пульте, то текущей должна стать 0-ая
  4. Если текущая радиостанция - 0, и клиент нажал на кнопку prev (предыдущая) на пульте, то текущей должна стать максимальная
  5. Клиент должен иметь возможность выставлять номер радиостанции с цифрового пульта (вводя числа 0 - количество станций)

Важно: один вызов метода переключения радиостанции должен приводить к переключению на единицу!

Требования к работе с уровнем громкости звука:

  1. Клиент должен иметь возможность увеличивать и уменьшать уровень громкости звука (в пределах от 0 до 100)
  2. Если уровень громкости звука достиг максимального значения, то дальнейшее нажатие на + не должно ни к чему приводить
  3. Если уровень громкости звука достиг минимального значения, то дальнейшее нажатие на - не должно ни к чему приводить

Важно: один вызов метода должен приводить к переключению на единицу звука (если не достигнут min/max)!

Требования к проекту:

  1. Подключите плагин Surefire так, чтобы сборка падала в случае отсутсвия тестов
  2. Подключите плагин JaCoCo в режиме генерации отчётов (обрушать сборку по покрытию не нужно)
  3. Реализуйте нужные классы и методы
  4. Напишите автотесты на методы, содержащие логику, добившись 100% покрытия по branch'ам
  5. Подключите CI на базе Github Actions и выложите всё на Github

Итого: у вас должен быть репозиторий на GitHub, в котором расположен ваш Java-код и Pull Request.

Задача №2 - "Lombok"

Легенда

Пришла пора разобраться с Lombok. В вашем личном кабинете прикреплено видео, где демонстрируется работа с Lombok.

Что нужно сделать:

  1. Из ветки, созданной в предыдущем задании (flexible), создайте ветку lombok, в которой перепишите ваши data-class'ы с использование Lombok
  2. Сделайте коммит и Pull Request на Github (удостоверьтесь, что CI успешно проводит сборку)

Итого: у вас должен быть репозиторий на GitHub, в котором расположен ваш Java-код и Pull Request.