Skip to content

Latest commit

 

History

History

07_exceptions

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Домашнее задание к занятию «3.1. Исключения»

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

Важно: ознакомьтесь со ссылками на главной странице репозитория с домашними заданиями.

Если у вас что-то не получилось, оформлите Issue. Шаблон для оформления.

Нужно сделать все задачи в одном репозитории.

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

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

Задача №1.PostNotFoundException

Давайте разберёмся, как внедрить в сервис с постами возможность комментирования.

Нужно добавить метод createComment в WallService:

class WallService {
    private var posts = emptyArray<Post>()
    private var comments = emptyArray<Comment>()

    fun createComment(postId: Int, comment: Comment): Comment {
        TODO()
    }
}

Функция сначала должна проверить, существует ли в массиве posts пост с ID равным postId. Если существует, то добавить комментарий в массив comments и вернуть только что добавленный комментарий.

Если не существует, выкинуть исключение PostNotFoundException.

Спроектировать класс для комментариев вам нужно самостоятельно на базе описания типа Comment. Есть сохранённая копия.

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

Задача №2. JUnit

Напишите два теста на созданную функцию:

  1. Функция отрабатывает правильно, если добавляется комментарий к правильному посту.
  2. Функция выкидывает исключение, если была попытка добавить комментарий к несуществующему посту.

Вот как протестировать, что какой-то код выкидывает исключение:

@Test(expected = PostNotFoundException::class)
fun shouldThrow() {
    // здесь код с вызовом функции, которая должна выкинуть PostNotFoundException
}

При этом assert в конце теста не нужен. Достаточно сделать вызов функции, которая должна выкинуть исключение.

Важно: после ваших обновлений WallService должна оставаться функциональной, т. е. автотесты должны проходить.

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

Задача №3. Жалобы*

Важно: это не обязательная задача. Её выполнение не влияет на зачёт по ДЗ.

Внедрите функцию для уведомления о негативных комментариях. Есть сохранённая копия.

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

  1. Реализовать саму функцию (для простоты храните эти репорты в отдельном массиве).
  2. Подумать, в каких случаях и какие нужно выкидывать исключения*.
  3. Написать автотесты.
Подсказка*

Обратите внимание, что неверным может быть не только ID комментария, но и причина.

Важно: после ваших обновлений WallService должна оставаться функциональной, т.е. автотесты должны проходить.

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