Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 27 additions & 27 deletions HW_MOCKITO.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
# Домашнее задание к занятию "Композиция и зависимость объектов. Mockito при создании автотестов"
# Домашнее задание к занятию «Композиция и зависимость объектов. Mockito при создании автотестов»

## Цель задания

1. Научиться проектировать классы, внутреннее состояние которых содержит наборы данных
1. Научиться проектировать классы, внутреннее состояние которых содержит наборы данных.

------

## Инструкция к заданию

1. Скачайте и установите профессиональный редактор кода [Intellij Idea Community Version](https://www.jetbrains.com/idea/download/)
1. Откройте IDEA и [создайте и настройте новый Maven-проект](QA_Maven_Idea_Create.md) (под каждую задачу следует создавать отдельный проект, если обратное не сказано в условии)
1. Скачайте и установите профессиональный редактор кода [IntelliJ IDEA Community Version](https://www.jetbrains.com/idea/download/).
1. Откройте IDEA, [создайте и настройте новый Maven-проект](QA_Maven_Idea_Create.md). Под каждую задачу следует создавать отдельный проект, если обратное не сказано в условии.
2. Создайте пустой репозиторий на GitHub и свяжите его с папкой вашего проекта (не с какой-либо другой папкой).
3. Правильно настройте репозиторий в плане `.gitignore`. Проигнорируйте папки `.idea` и `target` (раньше была `out`) и `.iml`-файл - их в репозитории быть не должно.
4. Закоммитьте и запушьте созданный проект на гитхаб, [настройте Github Actions](QA_CI.md), сделайте `git pull`.
4. Выполните в IDEA требуемую задачу согласно условию.
5. Проверьте соблюдение [правил форматирования кода](QA_Java_Idea_Format.md)
6. Убедитесь что при запуске `mvn clean verify` (раньше было `mvn clean test`) все тесты запускаются, проходят, а сборка завершается успешно
3. Правильно настройте репозиторий в плане `.gitignore`. Проигнорируйте папки `.idea` и `target` (раньше была `out`) и `.iml`-файл их в репозитории быть не должно.
4. Закоммитьте и запушьте созданный проект на GitHub, [настройте GitHub Actions](QA_CI.md), сделайте `git pull`.
4. Выполните в IDEA требуемую задачу по условию.
5. Проверьте соблюдение [правил форматирования кода](QA_Java_Idea_Format.md).
6. Убедитесь, что при запуске `mvn clean verify` (раньше было `mvn clean test`) все тесты запускаются, проходят, а сборка завершается успешно.
7. Закоммитьте и отправьте в репозиторий содержимое папки проекта.
8. Убедитесь, что CI запустился на последнем коммите и завершился успешно (зелёная галочка).

------

## Материалы, которые пригодятся для выполнения задания

1. [Как создать Maven-проект в IDEA?](QA_Maven_Idea_Create.md)
1. [Как отформатировать код в Java?](QA_Java_Idea_Format.md)
1. [Как настроить CI на основе Github Actions?](QA_CI.md)
1. [Как создать Maven-проект в IDEA](QA_Maven_Idea_Create.md).
1. [Как отформатировать код в Java](QA_Java_Idea_Format.md).
1. [Как настроить CI на основе GitHub Actions](QA_CI.md).

------

Expand All @@ -35,7 +35,7 @@

![image](https://user-images.githubusercontent.com/53707586/152697921-e71d853c-aa2e-482b-be61-39e6c2cfb0b1.png)

В этой задаче не нужно разделять менеджер и репозиторий — все фильмы должны храниться внутри массива в поле самого менеджера. Изначально, сразу после создания, менеджер не должен содержать фильмов.
В этой задаче не нужно разделять менеджер и репозиторий. Все фильмы должны храниться внутри массива в поле самого менеджера. Изначально, сразу после создания, менеджер не должен содержать фильмов.

Менеджер должен уметь выполнять следующие операции:
1. Добавление нового фильма.
Expand All @@ -44,7 +44,7 @@

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

Метод получения последних фильмов будет очень похож на тот, что был в лекции. Основное отличие в том, что вам в его начале надо будет вычислить правильный ожидаемый размер результирующего массива-ответа, а не просто брать длину массива, что лежит в поле. Сделать это можно, заведя целочисленную переменную, в которую вы сохраните желаемый размер создаваемого массива, вычислите с помощью условных операторов для неё значение, а затем только создадите массив, указав эту переменную как требуемый для него размер, например:
Метод получения последних фильмов будет очень похож на тот, который был в лекции. Основное отличие в том, что вам в его начале надо будет вычислить правильный ожидаемый размер результирующего массива-ответа, а не просто брать длину массива, который лежит в поле. Сделать это можно, заведя целочисленную переменную, в которую вы сохраните желаемый размер создаваемого массива, вычислите с помощью условных операторов для неё значение, а затем только создадите массив, указав эту переменную как требуемый для него размер, например:

```java
...
Expand All @@ -64,25 +64,25 @@

Не забывайте про использование отладчика для поиска проблем вашей реализации, если тесты проходить не будут.

Напишите необходимые, с вашей точки зрения, автотесты на различные состояния менеджера. Можно делать их не в одном файле.
Напишите необходимые с вашей точки зрения автотесты на различные состояния менеджера. Можно делать их не в одном файле.

------

## Правила приема работы
## Правила приёма работы

Прикреплена ссылка на публичный репозиторий с решением задачи
Прикреплена ссылка на публичный репозиторий с решением задачи.

------

## Критерии оценки

1. В каждом репозитории размещено содержимое папки проекта IDEA. Корнем репозитория должна именно папка проекта - не папка `src`, не папка внутри которой лежит папка проекта; т.о. в корне репозитория должна лежать сразу папка `src`.
1. Есть файл `.gitignore`, игнорирующий ненужные файлы и папки, которые должны отсутствовать в репозитории. Если они присутствуют - их нужно оттуда удалить.
1. Программа соответствует всем требованиям из условия задачи
1. Программа использует только те инструменты языка, которые мы проходили или которые прямо разрешены условием задачи
1. Программа работает правильно на всех примерах из условия
1. Программный код отформатирован и соответствует пройденным требованиям к качеству кода
1. При запуске `mvn clean verify` тесты запускаются и проходят, а сборка завершается успешно
2. В репозитории настроен CI на основе Github Actions и он успешно прошёл на последнем коммите
3. Программа спроектирована достаточно логично и правильно, не противоречит общепринятым в производстве практикам и традициям
4. При наличии недочётов, в зависимости от их серьёзности и количества, работа может быть отправлена на доработку или принята; решение принимается на основе экспертной оценки работы.
1. В каждом репозитории размещено содержимое папки проекта IDEA. Корнем репозитория должна быть именно папка проекта не папка `src`, не папка, внутри которой лежит папка проекта. В корне репозитория должна лежать сразу папка `src`.
1. Есть файл `.gitignore`, игнорирующий ненужные файлы и папки, которые должны отсутствовать в репозитории. Если они присутствуют, их нужно оттуда удалить.
1. Программа соответствует всем требованиям из условия задачи.
1. Программа использует только те инструменты языка, которые мы проходили или которые прямо разрешены условием задачи.
1. Программа работает правильно на всех примерах из условия.
1. Программный код отформатирован и соответствует пройденным требованиям к качеству кода.
1. При запуске `mvn clean verify` тесты запускаются и проходят, а сборка завершается успешно.
2. В репозитории настроен CI на основе GitHub Actions и он успешно прошёл на последнем коммите.
3. Программа спроектирована достаточно логично и правильно, не противоречит общепринятым в производстве практикам и традициям.
4. При наличии недочётов, в зависимости от их серьёзности и количества, работа может быть отправлена на доработку или принята; решение принимается на основе экспертной оценки.