Работа с автотестами «Java-Разработчик» #
ℹ️ На вашем курсе есть задания с автотестами в GitLab. Они помогут вам понять, соответствует ли ваше решение требованиям в практическом задании.
⬇️ Получение материалов практических заданий #
Если задание с автотестами, то ниже условия практического задания, увидите блок «Сдача практического задания»:
Нажмите кнопку «Приступить к выполнению».
Ветка и Merge Request будет созданы автоматически
Нажмите Перейти в GitLab, и вам откроется репозиторий для выполнения практического задания.
ℹ️ Для каждого практического задания у вас в профиле будет создаваться новый репозиторий на gitlab.skillbox.ru
Внутри репозитория - материалы для выполнения практического задания.
Также в репозитории будет создана ветка homework и Merge Request, имя ветки указано в блоке «Сдача практического задания»:
Посмотреть список веток и перейти в каждую из них вы можете, используя выпадающее меню. Убедитесь, что у вас есть ветка homework.
ℹ️ Имя ветки может быть различное, в зависимости от практического задания.
После этого приступайте к выполнению практического задания.
ℹ️ Не удаляйте автоматически созданный Merge Request и ветку, практическое задание связано с ними. Дальнейшее прохождение практического задания будет невозможно без обращения в техническую поддержку (hello@skillbox.ru)
⌨️ Выполнение практического задания #
После того как вы убедились, что репозиторий и ветка на месте, приступайте к выполнению практического задания.
Получаем код из репозитория #
- Клонируйте репозиторий, используя среду разработки IntelliJ IDEA.
- Выберите пункт меню File → New → Project from Version Control…
Откроется диалоговое окно. В одно из полей необходимо вставить ссылку на репозиторий, в другом поле — выбрать папку: в неё будет клонирован репозиторий.
⚠️ Папка должна быть пустой. Папка не должна находиться внутри папки репозитория java_basics.
Скопируйте ссылку для клонирования репозитория, нажав на кнопку Clone на странице вашего репозитория:
В итоге после вставки и выбора директории:
Нажимайте Clone, после клонирования репозитория IDEA откроет проект.
Если у вас откроется диалоговое окно:
Выбирайте Trust Project. Это подтверждение доверия к проекту и готовность его запустить.
Подготовка к выполнению работы #
- Перейдите в ветку, указанную в условии, в примере это homework.
Для этого выберите в меню Git → Branches…</
Вам откроется список веток проекта:
Для переключения на ветку homework выберите из раздела Remote Branches (ветки в удалённом репозитории) ветку origin/homework. Нажмите на этот пункт и далее в меню выберите пункт Checkout (переключится на выбранную ветку).
После переключения ветки в нижнем правом углу у вас должна быть указана ветка, в которой вы находитесь:
Выполнение задания #
Теперь приступайте к выполнению практического задания и написанию кода.
Предлагаю внести небольшое изменение в код, выполнить коммит, отправить в удалённый репозиторий и посмотреть, как работают автотесты и где смотреть результаты.
- Откройте для редактирования файл.
- Поменяйте одно из значений. Это не является решением, мы точно ожидаем, что тесты не пройдём:
Запустим тесты локально, то есть не загружая на проверку.
- Откройте в дереве проекта папку
src/test/java
. Вызовите контекстное меню у папки java (обычно это можно сделать, нажав правой клавишей мыши по названию папки). - В открывшемся меню выберите пункт
Run 'All Tests'
В итоге запустятся тесты, и вы сможете проанализировать результат работы вашего кода.
- В списке будут находится все запущенные тесты.
Зеленая галочка — тест успешно пройден.
Желтая иконка — тест запустился, но результат не соответствует ожидаемому значению.
Красная иконка — при выполнении кода произошла ошибка в работе программы.
Ваша задача — написать код таким образом, чтобы все иконки одновременно при запуске тестов стали зелёными.
Expected — ожидаемое значение, верный результат.
Actual — значение, которое вернул ваш код.
Если ожидаемое и актуальное значения объёмны, то удобно их посмотреть в отдельном окне. Для этого нажмите на . Для примера показано окно difference для теста «Вывод количества грузовиков…».
Рекомендуемый подход:
Проверить код локально, то есть на компьютере с помощью тестов.
Если возникают вопросы — посоветоваться с коллегами и кураторами в чате курса.
После — отправлять работу в репозиторий.
⏩ Отправка работы в удалённый репозиторий #
Убедитесь, что вы находитесь в ветке homework. В нашем примере мы заменили только одно значение и ожидаем, что тесты не пройдут.
Выполните коммит #
Зафиксируем изменения кода в виде коммита. Только коммиты можно отправлять в удалённый репозиторий.
Для этого нажмите в панели инструментов на иконку или выберите пункт меню Git → Commit…
У вас откроется окно или панель для выполнения коммита:
Здесь выбирайте файлы для коммита. Среда разработки обычно выбирает все изменённые файлы. Мы поменяли только одно значение в одном файле. Поэтому у нас в коммит попадёт только один файл.
Каждый коммит имеет комментарий. Это краткое описание изменений в файлах коммита.
После выбора файлов и написания комментария создайте коммит, нажав на Commit.
После создания коммита проверьте успешное выполнение:
В нижнем меню выберите Git (если этого пункта нет, то выполните в верхнем меню Git → Show Git Log)
В списке коммитов на самом верху должен быть комментарий вашего коммита, а у него, в свою очередь, — ярлык homework. Это значит, что коммит выполнен в ветке homework, — то есть всё сделано верно.
Также можете посмотреть, какие изменённые файлы попали в выбранный коммит.
Отправьте коммит в удалённый репозиторий #
Для отправки коммита (операция Push) нажмите на иконку или выберите пункт меню Git → Push…
Откроется диалоговое окно:
- Указано, из какой ветки и в какую ветку в удалённом репозитории переместится коммит. Обычно, да и в нашем случае, ветки в удалённом и локальном репозиториях называются одинаково. Обе — homework. Далее идёт список коммитов для отправки. У нас только один коммит.
- Нажимайте кнопку Push. У вас могут запросить логин и пароль от аккаунта на gitlab.skillbox.ru, и после коммит будет загружен.
В логе, в подтверждении успеха, у вашего коммита появится ярлык origin & homework
а это значит, что ваш коммит находится в ветке homework и в удалённом репозитории origin. Обычно origin — это метка основного удалённого репозитория проекта. Если этой метки нет, значит, коммиты ещё не отправлены и находятся только на вашем компьютере.
📶 Как посмотреть результаты выполнения автотестов #
Как только вы отправили коммит в ветку homework удалённого репозитория, переходите на страницу вашего репозитория на gitlab.skillbox.ru. Это можно сделать из LMS, нажав кнопку «Перейти в GitLab».
На скриншоте показана ситуация, когда вы только что отправили коммит и запустилась проверка вашего кода.
Если тесты не пройдут проверку, вы увидите следующее сообщение:
В репозитории для просмотра результатов тестов перейдите в раздел Pipelines:
Вам откроется список запущенных заданий для проверки кода.
В поле «Статус» указывается результат прохождения тестов.
- Failed — тесты не прошли, необходимо посмотреть результат, внести изменения в код, выполнить коммит и снова отправить.
- Passed — все тесты выполнились успешно, практического задание выполнено. Оно вам зачтётся и откроется следующее.
Для просмотра результата выполнения тестов с failed-статусом нажмите на статус.
Каждый запуск проверок поделён на несколько этапов:
- Test — запуск тестов, это такие же тесты, что вы запускаете локально. Может быть один и более пунктов. Каждый такой блок называется Job.
- Codestyle — проверка качества кода. В нашем случае всё ок, и стоит зелёная галочка.
- Report — это технический Job, он формирует отчёт, если хотя бы один пункт не был пройден.
- Для просмотра результатов тестов используйте вкладку Tests:
Здесь вы можете посмотреть каждый тест из каждого блока Job в разделе Tests.
Зайдите в geometryCalculator:
Тут вы можете посмотреть каждый тест отдельно: его название, статус и ожидаемое значение. Для этого нажмите на кнопку View details.
📃 Как посмотреть результат проверки стиля кода #
Если после отправки коммита вы внутри Pipeline видите, что проверка Codestyle не прошла:
скачайте отчёт и посмотрите список требуемых исправлений. Для этого перейдите в Report:
и справа на панели, в разделе Job artifacts, нажмите Download:
Вы получите архив. Распакуйте его и
откройте файл target/site/index.html
.
Файл откроется в браузере и выглядит таким образом:
В этом отчёте вся информация о проекте. Нас интересует вкладка «Отчёты проекта». Переходите в них.
- Surefire Report — по ссылке содержится результат выполнения тестов. Он дублирует вкладку, которая есть в GitLab.
- Checkstyle — содержит результаты выполнения проверки стиля кода.
Переходите по ссылке Checkstyle. На странице будет отчёт и детальный список замечаний внизу:
В отчёте указаны тип ошибки, имя правила, описание, что требуется исправить, и строка, на которой найдена ошибка.
Вам необходимо устранить все замечания из этого списка. После — выполнить коммит, отправку коммита в удалённый репозиторий и дождаться результата выполнения проверки тестами кода и его стиля.
Если найдены ошибки, то повторите действия, начиная с пункта «Как посмотреть результаты выполнения автотестов».
🆗 Результат при успешном прохождении тестов #
Если все тесты успешно пройдены, вы увидите сообщение об успехе.
Поздравляю! Вы выполнили поставленную задачу!
После того как вам зачтут задание, завершите работу в репозитории и перенесите изменения из ветки homework в master. Это опциональный этап, однако при разработке в команде, после завершения работы его обычно надо проводить отдельной задачей. Изменения «сливают» в одну ветку.
🛠️ Окончание работы над практическим заданием #
После того как все тесты будут пройдены, зайдите в список Merge Request
и выполните слияние ветки с практической работой и ветки master:
Отличная работа! На этом выполнение практической работы завершено!
Приступайте к следующему заданию! 👍
❓ Частые вопросы и ответы #
Ошибка при отправке коммита: Push rejected #
Если при отправке коммита, вы видите уведомление Push rejected to origin/master
или если работаете через консоль, такой ответ:
! [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
.
Один из вариантов решения вопроса по переносу данных коммита в другую ветку:
Сделайте копию папки с репозиторием, вы всегда сможете восстановить файлы, если что-то пойдет не так.
Отмените ваш коммит в
master
. Это действие не удалит ваши файлы. Для этого откройте вкладку Git → Log. Выберите коммитinit
и вызовите в меню Reset Current Branch to Here…Выберите Mixed. При таком режиме, отмениться коммит, изменения которые были в коммите останутся в вашей рабочей директории, эти изменения не будут использоваться в Git. Поэтому мы сможем эти изменения перенести в новую ветку и там уже выполнить коммит.
Переключитесь на ветку
homework
. Выполните коммит и уже отправьте коммит в удаленный репозиторий.