Работа с Автотестами на курсе «Java-Разработчик»

Работа с автотестами «Java-Разработчик» #

ℹ️ На вашем курсе есть задания с автотестами в GitLab. Они помогут вам понять, соответствует ли ваше решение требованиям в практическом задании.

⬇️ Получение материалов практических заданий #

Если задание с автотестами, то ниже условия практического задания, увидите блок «Сдача практического задания»:

dd%20eed3486088c5418a87e09751164fb9c7/Untitled.png

Нажмите кнопку «Приступить к выполнению».

Ветка и Merge Request будет созданы автоматически

dd%20eed3486088c5418a87e09751164fb9c7/Untitled%201.png

Нажмите Перейти в GitLab, и вам откроется репозиторий для выполнения практического задания.

ℹ️ Для каждого практического задания у вас в профиле будет создаваться новый репозиторий на gitlab.skillbox.ru

Внутри репозитория - материалы для выполнения практического задания.

Untitled

Также в репозитории будет создана ветка homework и Merge Request, имя ветки указано в блоке «Сдача практического задания»:

dd%20eed3486088c5418a87e09751164fb9c7/Untitled%203.png

Посмотреть список веток и перейти в каждую из них вы можете, используя выпадающее меню. Убедитесь, что у вас есть ветка homework.

ℹ️ Имя ветки может быть различное, в зависимости от практического задания.

Untitled

После этого приступайте к выполнению практического задания.

ℹ️ Не удаляйте автоматически созданный Merge Request и ветку, практическое задание связано с ними. Дальнейшее прохождение практического задания будет невозможно без обращения в техническую поддержку (hello@skillbox.ru)

⌨️ Выполнение практического задания #

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

Получаем код из репозитория #

  • Клонируйте репозиторий, используя среду разработки IntelliJ IDEA.
  • Выберите пункт меню File → New → Project from Version Control…

Untitled

Откроется диалоговое окно. В одно из полей необходимо вставить ссылку на репозиторий, в другом поле — выбрать папку: в неё будет клонирован репозиторий.

Untitled

⚠️ Папка должна быть пустой. Папка не должна находиться внутри папки репозитория java_basics.

Скопируйте ссылку для клонирования репозитория, нажав на кнопку Clone на странице вашего репозитория:

Untitled

В итоге после вставки и выбора директории:

Untitled

Нажимайте Clone, после клонирования репозитория IDEA откроет проект.

Если у вас откроется диалоговое окно:

Untitled

Выбирайте Trust Project. Это подтверждение доверия к проекту и готовность его запустить.

Подготовка к выполнению работы #

  • Перейдите в ветку, указанную в условии, в примере это homework.

Для этого выберите в меню Git → Branches…</

Untitled

Вам откроется список веток проекта:

Untitled

Для переключения на ветку homework выберите из раздела Remote Branches (ветки в удалённом репозитории) ветку origin/homework. Нажмите на этот пункт и далее в меню выберите пункт Checkout (переключится на выбранную ветку).

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

Untitled

Выполнение задания #

Теперь приступайте к выполнению практического задания и написанию кода.

Предлагаю внести небольшое изменение в код, выполнить коммит, отправить в удалённый репозиторий и посмотреть, как работают автотесты и где смотреть результаты.

  1. Откройте для редактирования файл.
  2. Поменяйте одно из значений. Это не является решением, мы точно ожидаем, что тесты не пройдём:

Untitled

Запустим тесты локально, то есть не загружая на проверку.

  1. Откройте в дереве проекта папку src/test/java . Вызовите контекстное меню у папки java (обычно это можно сделать, нажав правой клавишей мыши по названию папки).
  2. В открывшемся меню выберите пункт Run 'All Tests'

Untitled

В итоге запустятся тесты, и вы сможете проанализировать результат работы вашего кода.

Untitled

  1. В списке будут находится все запущенные тесты.
  • Зеленая галочка — тест успешно пройден.

  • Желтая иконка — тест запустился, но результат не соответствует ожидаемому значению.

  • Красная иконка — при выполнении кода произошла ошибка в работе программы.

Ваша задача — написать код таким образом, чтобы все иконки одновременно при запуске тестов стали зелёными.

  1. Expected — ожидаемое значение, верный результат.

  2. Actual — значение, которое вернул ваш код.

  3. Если ожидаемое и актуальное значения объёмны, то удобно их посмотреть в отдельном окне. Для этого нажмите на . Для примера показано окно difference для теста «Вывод количества грузовиков…».

Untitled

Untitled

Рекомендуемый подход:

  • Проверить код локально, то есть на компьютере с помощью тестов.

  • Если возникают вопросы — посоветоваться с коллегами и кураторами в чате курса.

  • После — отправлять работу в репозиторий.

⏩ Отправка работы в удалённый репозиторий #

Убедитесь, что вы находитесь в ветке homework. В нашем примере мы заменили только одно значение и ожидаем, что тесты не пройдут.

Выполните коммит #

Зафиксируем изменения кода в виде коммита. Только коммиты можно отправлять в удалённый репозиторий.

Для этого нажмите в панели инструментов на иконку или выберите пункт меню Git → Commit…

Untitled

Untitled

У вас откроется окно или панель для выполнения коммита:

Untitled

  1. Здесь выбирайте файлы для коммита. Среда разработки обычно выбирает все изменённые файлы. Мы поменяли только одно значение в одном файле. Поэтому у нас в коммит попадёт только один файл.

  2. Каждый коммит имеет комментарий. Это краткое описание изменений в файлах коммита.

  3. После выбора файлов и написания комментария создайте коммит, нажав на Commit.

После создания коммита проверьте успешное выполнение:

Untitled

  1. В нижнем меню выберите Git (если этого пункта нет, то выполните в верхнем меню Git → Show Git Log)

  2. В списке коммитов на самом верху должен быть комментарий вашего коммита, а у него, в свою очередь, — ярлык homework. Это значит, что коммит выполнен в ветке homework, — то есть всё сделано верно.

  3. Также можете посмотреть, какие изменённые файлы попали в выбранный коммит.

Отправьте коммит в удалённый репозиторий #

Для отправки коммита (операция Push) нажмите на иконку или выберите пункт меню Git → Push…

Untitled

Untitled

Откроется диалоговое окно:

Untitled

  1. Указано, из какой ветки и в какую ветку в удалённом репозитории переместится коммит. Обычно, да и в нашем случае, ветки в удалённом и локальном репозиториях называются одинаково. Обе — homework. Далее идёт список коммитов для отправки. У нас только один коммит.
  2. Нажимайте кнопку Push. У вас могут запросить логин и пароль от аккаунта на gitlab.skillbox.ru, и после коммит будет загружен.

В логе, в подтверждении успеха, у вашего коммита появится ярлык origin & homework

Untitled

а это значит, что ваш коммит находится в ветке homework и в удалённом репозитории origin. Обычно origin — это метка основного удалённого репозитория проекта. Если этой метки нет, значит, коммиты ещё не отправлены и находятся только на вашем компьютере.

📶 Как посмотреть результаты выполнения автотестов #

Как только вы отправили коммит в ветку homework удалённого репозитория, переходите на страницу вашего репозитория на gitlab.skillbox.ru. Это можно сделать из LMS, нажав кнопку «Перейти в GitLab».

dd%20eed3486088c5418a87e09751164fb9c7/Untitled%2026.png

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

Если тесты не пройдут проверку, вы увидите следующее сообщение:

dd%20eed3486088c5418a87e09751164fb9c7/Untitled%2027.png

В репозитории для просмотра результатов тестов перейдите в раздел Pipelines:

Untitled

Вам откроется список запущенных заданий для проверки кода.

Untitled

В поле «Статус» указывается результат прохождения тестов.

Untitled

  • Failed — тесты не прошли, необходимо посмотреть результат, внести изменения в код, выполнить коммит и снова отправить.

Untitled

  • Passed — все тесты выполнились успешно, практического задание выполнено. Оно вам зачтётся и откроется следующее.

Для просмотра результата выполнения тестов с failed-статусом нажмите на статус.

Untitled

Каждый запуск проверок поделён на несколько этапов:

  1. Test — запуск тестов, это такие же тесты, что вы запускаете локально. Может быть один и более пунктов. Каждый такой блок называется Job.
  2. Codestyle — проверка качества кода. В нашем случае всё ок, и стоит зелёная галочка.
  3. Report — это технический Job, он формирует отчёт, если хотя бы один пункт не был пройден.
  4. Для просмотра результатов тестов используйте вкладку Tests:

Untitled

Здесь вы можете посмотреть каждый тест из каждого блока Job в разделе Tests.

Зайдите в geometryCalculator:

Untitled

Тут вы можете посмотреть каждый тест отдельно: его название, статус и ожидаемое значение. Для этого нажмите на кнопку View details.

Untitled

📃 Как посмотреть результат проверки стиля кода #

Если после отправки коммита вы внутри Pipeline видите, что проверка Codestyle не прошла:

Untitled

скачайте отчёт и посмотрите список требуемых исправлений. Для этого перейдите в Report:

Untitled

и справа на панели, в разделе Job artifacts, нажмите Download:

Untitled

Вы получите архив. Распакуйте его и откройте файл target/site/index.html. Файл откроется в браузере и выглядит таким образом:

Untitled

В этом отчёте вся информация о проекте. Нас интересует вкладка «Отчёты проекта». Переходите в них.

Untitled

  • Surefire Report — по ссылке содержится результат выполнения тестов. Он дублирует вкладку, которая есть в GitLab.
  • Checkstyle — содержит результаты выполнения проверки стиля кода.

Переходите по ссылке Checkstyle. На странице будет отчёт и детальный список замечаний внизу:

Untitled

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

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

Если найдены ошибки, то повторите действия, начиная с пункта «Как посмотреть результаты выполнения автотестов».

🆗 Результат при успешном прохождении тестов #

Если все тесты успешно пройдены, вы увидите сообщение об успехе.

Поздравляю! Вы выполнили поставленную задачу!

После того как вам зачтут задание, завершите работу в репозитории и перенесите изменения из ветки homework в master. Это опциональный этап, однако при разработке в команде, после завершения работы его обычно надо проводить отдельной задачей. Изменения «сливают» в одну ветку.

🛠️ Окончание работы над практическим заданием #

После того как все тесты будут пройдены, зайдите в список Merge Request

dd%20eed3486088c5418a87e09751164fb9c7/Untitled%2042.png

и выполните слияние ветки с практической работой и ветки master:

dd%20eed3486088c5418a87e09751164fb9c7/Untitled%2043.png

Отличная работа! На этом выполнение практической работы завершено!

Приступайте к следующему заданию! 👍

❓ Частые вопросы и ответы #

Ошибка при отправке коммита: Push rejected #

Если при отправке коммита, вы видите уведомление Push rejected to origin/master dd%20eed3486088c5418a87e09751164fb9c7/2021-12-02_11-47.png

или если работаете через консоль, такой ответ:

! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to
'gitlab.skillbox.ru:myAccount/java_numbersanddates_1.git'

это значит, что вы пытаетесь отправить коммит напрямую в ветку master. Вам надо переключится на ветку homework выполнить практическое задание в ней и уже отправить коммит в homework.

Один из вариантов решения вопроса по переносу данных коммита в другую ветку:

Сделайте копию папки с репозиторием, вы всегда сможете восстановить файлы, если что-то пойдет не так.
  1. Отмените ваш коммит в master. Это действие не удалит ваши файлы. Для этого откройте вкладку Git → Log. Выберите коммит init и вызовите в меню Reset Current Branch to Here… dd%20eed3486088c5418a87e09751164fb9c7/2021-12-02_12-11.png

  2. Выберите Mixed. При таком режиме, отмениться коммит, изменения которые были в коммите останутся в вашей рабочей директории, эти изменения не будут использоваться в Git. Поэтому мы сможем эти изменения перенести в новую ветку и там уже выполнить коммит. dd%20eed3486088c5418a87e09751164fb9c7/2021-12-02_12-00_1.png

  3. Переключитесь на ветку homework. Выполните коммит и уже отправьте коммит в удаленный репозиторий.