В качестве результата пришлите ссылки на ваши GitHub-проекты в личном кабинете студента на сайте netology.ru.
Все задачи этого занятия можно делать в одном репозитории.
Важно: если у вас что-то не получилось, то оформляйте Issue по установленным правилам.
Вы можете делать все задачи этого занятия в одном репозитории (если делаете их последовательно).
- Инициализируйте на своём компьютере пустой Git-репозиторий
- Добавьте в него готовый файл .gitignore
- Добавьте в этот же каталог необходимые файлы
- Сделайте необходимые коммиты
- Создайте публичный репозиторий на GitHub и свяжите свой локальный репозиторий с удалённым
- Сделайте пуш (удостоверьтесь, что ваш код появился на GitHub)
- Ссылку на ваш проект отправьте в личном кабинете на сайте netology.ru
- Задачи, отмеченные, как необязательные, можно не сдавать, это не повлияет на получение зачета (в этом ДЗ все задачи являются обязательными)
В проект умного дома решили добавить возможность увеличивать температуру на один градус и уменьшать.
Создайте на базе проекта с лекции собственный проект, в котором:
- Подключите плагин Surefire так, чтобы сборка падала в случае отсутсвия тестов
- Подключите плагин JaCoCo в режиме генерации отчётов (обрушать сборку по покрытию не нужно)
- Удалите
Conditioner
и тесты к нему - Переименуйте
ConditionerAdvanced
вConditioner
(Shift + F6 на имени класса) - Реализуйте методы
public void increaseCurrentTemperature()
иpublic void decreaseCurrentTemperature()
- Напишите автотесты на методы из предыдущего пункта, добившись 100% покрытия по branch'ам
- Подключите CI на базе Github Actions и выложите всё на Github
Как должны работать методы:
increaseCurrentTemperature
- увеличивает температуру на 1 до тех пор, пока не достигнута максимальная (maxTemperature
), последующие (после достиженияmaxTemperature
) вызовы метода не должны ничего менять в состоянии объектаdecreaseCurrentTemperature
- уменьшает температуру на 1 до тех пор, пока не достигнута минимальная (minTemperature
), последующие (после достиженияminTemperature
) вызовы метода не должны ничего менять в состоянии объекта
Важно: используйте Early Exit.
Важно: один вызов метода должен приводить к переключению на один градус (если не достигнут min/max)!
Итого: у вас должен быть репозиторий на GitHub, в котором расположен ваш Java-код, + CI на базе Github Actions
В рамках проекта по созданию "Умного дома" у нас появился очень важный клиент, которых хочет кастомную доработку: он очень любит радио, поэтому нам нужно научиться управлять радио.
Что нужно сделать: по аналогии с кондиционером создайте класс Radio
, в котором храните следующие поля:
- Номер текущей (прослушиваемой) радиостанции
- Громкость звука
Требования к работе с радиостанциями:
- Номер текущей радиостанции изменяется в пределах от 0 до 9
- Если текущая радиостанция - 9 и клиент нажал на кнопку
next
(следующая) на пульте, то текущей должна стать 0-ая - Если текущая радиостанция - 0 и клиент нажал на кнопку
prev
(предыдущая) на пульте, то текущей должна стать 9-ая - Клиент должен иметь возможность выставлять номер радиостанции с цифрового пульта (вводя числа 0 - 9)
Требования к работе с уровнем громкости звука:
- Клиент должен иметь возможность увеличивать и уменьшать уровень громкости звука (в пределах от 0 до 10)*
- Если уровень громкости звука достиг максимального значения, то дальнейшее нажатие на
+
не должно ни к чему приводить - Если уровень громкости звука достиг минимального значения, то дальнейшее нажатие на
-
не должно ни к чему приводить
Примечание*: на следующей паре мы поговорим, почему здесь 10
Важно: один вызов метода должен приводить к переключению на одну радиостанцию!
Создайте на базе проекта с лекции собственный проект (вы можете использовать проект из предыдущей задачи), в котором:
- Подключите плагин Surefire так, чтобы сборка падала в случае отсутсвия тестов
- Подключите плагин JaCoCo в режиме генерации отчётов (обрушать сборку по покрытию не нужно)
- Реализуйте нужные классы и методы
- Напишите автотесты на методы, содержащие логику, добившись 100% покрытия по branch'ам
- Подключите CI на базе Github Actions и выложите всё на Github
Итого: у вас должен быть репозиторий на GitHub, в котором расположен ваш Java-код.
Важно: данная задача не является обязательной! Её не выполнение не влияет на получение зачёта по ДЗ.
Когда вы разбирались с JaCoCo, одним из счётчиков являлся счётчик, ответственный за подсчёт сложности кода.
На базе значения этой метрики можно вычислить количество unit-тестов, необходимых для покрытия определённого метода.
Настройте JaCoCo (если требуется) на подсчёт этой метрики для второй задачи (нас интересуют только методы для обработки next
и prev
) и удостоверьтесь, что для этих методов кол-во ваших unit-тестов совпадает с рекомендациями метрики.
В README.md
репозитория второй задачи опишите:
- Формулу вычисления количества unit-тестов на основании значений, генерируемых JaCoCo
- Рекомендуемый порог цикломатической сложности кода (необходимо провести небольшое исследование)
В качестве отправной точки при проведении ваших исследований используйте:
- Сайт JaCoCo
- Википедию (статья о цикломатической сложности кода)