«Композиция и зависимость объектов. Mockito при создании автотестов»

Решения

Задание 1

Ветка main с проектом.

Задание 2

Ветка layers с проектом.

Что было сделано

Задание 1

  • Создан Maven проект с и настроен pom.xml c зависимостями и плагинами:
    • JunitJupier.
    • Lombok.
    • Jacoco.
  • Настроен maven.yml для Github Ci c verify-сборкой.
  • Реализован класс Poster.java с методами взаимодействия со строчными массивами.
  • Реализован класс с тестами PosterTest.java.

Задание 2



Описание Задания 1. Менеджер афиши (обязательное к выполнению)

Вам необходимо реализовать менеджер афиши для фильмов. В качестве объекта фильма можно взять объект строки — название фильма — или создать свой дата-класс.

image

Менеджер должен уметь выполнять следующие операции:

  1. Добавление нового фильма.
  2. Вывод всех фильмов в порядке добавления (findAll).
  3. Вывод максимального лимита* последних добавленных фильмов в обратном от добавления порядке (findLast).

*Сделайте так, чтобы по умолчанию выводилось последние 10 добавленных фильмов, но при создании менеджера можно было указать другое число, чтобы, например, выдавать 5, а не 10. То есть у менеджера должно быть два конструктора: один без параметров, выставляющий лимит менеджера в 10, а другой с параметром, берущий значение лимита для менеджера из параметра конструктора.

Описание Задания 2*. Менеджер афиши: divide and conquer (необязательная задача)

В первой задаче создайте новую ветку layers, в которой разделите менеджера на менеджера и репозиторий. В репозитории должны быть следующие методы:

  1. findAll — возвращает массив всех хранящихся в массиве объектов.
  2. save — добавляет объект в массив.
  3. findById — возвращает объект по идентификатору, либо null, если такого объекта нет.
  4. removeById — удаляет объект по идентификатору, если объекта нет, то пусть будет исключение, как на лекции.
  5. removeAll* — полностью вычищает репозиторий, для удаления всех элементов достаточно в поле items положить пустой массив.

Обеспечьте использование менеджером созданного вами репозитория. Репозиторий должен быть зависимостью для менеджера, то есть задаваться через конструктор и храниться в приватном поле.

Напишите 1–2 автотеста, используя Mockito для организации моков репозитория.