FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

java-labs/java-web-ru/tests at main · vmorkhat/java-labs · GitHub

Latest commit

 

History

History

README.md

Tests

В этом задании веб-приложение уже написано. Вам предстоит написать интеграционные тесты, которые будут проверять работу этого приложения. Интеграционное тестирование — это такой тип тестирования, при котором отдельные модули объединяются и тестируются вместе, как группа. Интеграционные тесты проверяют, как эти модули работают вместе.

В этом задании есть только одна реализация — правильная, и она должна пройти тестирование. Мы не будем автоматически тестировать ваши тесты, подставляя неправильные реализации приложения.

Ссылки

src/test/java/exercise/AppTest.java

Для проверки работы приложения в тестах мы будем отправлять ему запросы и проверять ответы. Поэтому перед началом всех тестов нужно запустить приложение, а после окончания всех тестов остановить его.

Часть тестов для приложения уже написана. Уже проверяется работа исходной страницы приложения, вывод всех пользователей, вывод конкретного пользователя и вывод формы создания пользователя. Вам предстоит проверить корректность работы приложения при создании нового пользователя. Нужно будет протестировать два сценария:

  • Позитивный — что при отправке валидных данных пользователь создаётся и добавляется в базу данных

  • Негативный — что при отправке невалидных данных новый пользователь не создаётся

Задачи

  • Создайте метод, который перед началом тестов запускает приложение. Чтобы указать, что метод должен выполниться перед всеми тестами в классе, используйте аннотацию @BeforeAll. В методе получите экземпляр приложения, использовав статический метод getApp() из класса App и запишите полученный экземпляр в свойство app класса.

    app = App.getApp();

    Запустите приложение при помощи метода start() на случайном порту. Получите порт, на котором запустилось приложение, затем сформируйте базовый URL и запишите его в свойство baseUrl класса.

    baseUrl = "http://localhost:" + port;

    Именно по этому URL мы будем обращаться к приложению в тестах

  • Создайте метод, который после завершения всех тестов остановит приложение. Чтобы указать, что метод должен выполниться после всех тестов в классе, используйте аннотацию @AfterAll

  • Изучите уже написанные тесты. Обратите внимание на комментарии к коду.

  • Напишите тест, который проверяет, что при отправке валидных данных приходит ответ с кодом 302, а новый пользователь создаётся и добавляется в базу данных. Данные пользователя считаются валидными, если:

    • Имя и фамилия не пустые
    • Email валидный (состоит из двух частей — имени ящика и доменного имени почтового сервиса, разделенных знаком @)
    • Пароль содержит не менее 4 символов

    Чтобы проверить, что пользователь с такими данными есть в базе, получите его из базы и проверьте, что его данные соответствуют тем, что были отправлены в запросе.

  • Напишите тест, который проверяет, что при отправке не валидных данных приходит ответ с кодом 422 и новый пользователь не добавляется в базу данных. Проверьте также, что тело ответа содержит данные пользователя и сообщения об ошибочно заполненных полях. Текст сообщений вы можете посмотреть в классе контроллера UserController.

  • Если считаете, что необходимо дополнительно протестировать ещё какие-то случаи, можете написать тесты и на них.

Подсказки

  • Метод field() библиотеки Unirest служит для установки значения поля в запросе

  • Метод getBody() возвращает тело ответа в виде строки

  • Метод getStatus() возвращает код ответа

  • Чтобы проверить, что значение точно соответствует ожидаемому, используйте метод isEqualTo()

    assertThat(actual).isEqualTo(expected);
  • Чтобы проверить равно ли значение null, используйте методы isNull() и isNotNull()

    assertThat(value).isNotNull();
    assertThat(value).isNull();

Back | FazBrowse Home | New Git URL