11/06/2022

Профессионально работаем с IntelliJ IDEA

Профессионально работаем с IntelliJ IDEA

Основы

Alt + 1(Win), ⌘ + 1(MacOs) - отобразить/скрыть вид проекта слева

Alt + Insert(Win), ⌘ + N(MacOs)
(клик в левом меню) - открывает диалог создания нового файла

Alt + Insert(Win), ⌘ + N(MacOs)
(клик в основной области окна) - открывает окно генерации методов разных типов (@Test, @SetUp, @TearDown)

Ctrl + P(Win), ⌘ + P(MacOS) - открывет подсказку параметров текущего метода

Alt + Enter(Win), Option + Enter(MacOs)
Alt + Shift + V(Win), Option + ⌘ + V(MacOs) - формирует из выражения новую переменную

⌘ + Shift + I(MacOs) - сбилдить gradle проект

Postfix

после выражения дописать .var - формирует из выражения новую переменную после числа дописать .for - формирует циклы от 0 до заданного числа

Справочная информация по работе в IDE

Shift + Shift - поиск по командам, файлам и всему остальному в проекте

Help + Keyboard Shortcuts PDF - загружает PDF файл со всеми сочетаниями клавиш

Плагин Key Promoter Х - подсказывает какие shortcuts нужно выбирать при совершении действий мышью

Ctrl + Alt + O(Win), Option + ⌘ + N(MacOs) - перемещает значение переменной непосредственно в метод

Option + Enter (на запускаемом методе), F9 - выполнить запуск кода

Ctrl + F11(Win), Option + F3(MacOs) - добавить файл в закладки

View - Tool Windows - TODO - открывается окно посмотра добавленных todo комментариев.
Здесь можно настроить фильтр поиска todo содержащие определенный текст, и добавить им соответсвующее выделение

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

Git/VSC

Редактирование коммита

В окне Git/VSC вкладка Log - можно нажать на коммит и изменить сообщение

Объединение коммитов

  1. Выбираем в вверхнем меню Git - Rebase,
  2. Выбираем текущую ветку из удаленного репозитория и выбираем опцию --interactive
  3. Нажимаем Rebase
  4. Откроется окно, в нем также можно выбрать и переименовать комит (Reword).
  5. Выделяем коммиты, которые хотим объединить и вверху выбираем Fixup и нажимаем Start Rebasing.

Отмена коммита

На вкладке Log нажимаем ПКМ на коммит до которого хотим откатиться и выбираем Reset Current Branch to Here....
Выбираем опцию Hard - все коммиты выше выбранного будут удалены без сохранения.

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

Ctrl + Q(Win), F1(MacOS) - показывает короткую документацию по текущему методу/переменной.

Ctrl + B(Win), ⌘ + B(MacOs) - переход к объявлению кода/либо поиск мест где данные код используется.

Ctrl + E(Win), ⌘ + E(MacOs) - открывается окно с недавними файлами которые были ранее открыты.

Ctrl + Alt + ⇨(Win), ⌘ + Option + ⇨(MacOs) - позволяет перемещаться по истории в том числе между открытыми ранее файлами выставляя курсор в том месте, где он ранее был при работе в этих файлах.

Ctrl + shift + E(Win), ⌘ + Shift + E(MacOs) - показывает последние участки кода с которыми была работа.

Для работы с рандомными файлами которые возможно даже не относятся к текущему проекту можно пользоваться разделом Scratches and Console. Он находится слева в окне с деревом проекта в самом низу. Эти файлы будут доступны в любых проектах. Можно сохранять разные шаблоны, шпаргалки и т.д.

Библиотека JsonPath

Alt + Enter(Win), Option + Enter(MacOs) - при нажатии на значении строковой переменной позволяет выбрать Inject language or reference после чего можно выбрать язык, чтобы содержимое строки отформатировалось и подсветилось в соотвествии с синтаксисом выбранного языка, например JSON. При повторном вызове команды, можно выбрать Edit JSON Fragment и в открывшемся окне отредактировать выбранный JSON или вставить большой фрагмент.

Прочитать данные из JSON

String json = "{\"name\": 10}";
JsonPath.read(json, "$..name")

При нажатии Option + Enter(MacOs) на команде "$..name" выбираем Evaluate JSONPath Expression Открывается окно в котором можно инспектировать json.

Если json код находится в отдельном файле, то открыв этот файл и выбрав Edit - Find - Evaluate JSONPath Expression, можно инспектировать текущий json не копируя его содержимое.

Find By XPath - Аналогичный инструмент для XML.

Регулярные выражения

При нажатии Option + Enter(MacOs) на строке с регулярным выражением можно выбрать Check RegExp и выполнить проверку регулярного выражения

Плагины

Docker

Можно установить из MarketPlace.

Открываем Tool окно Services (Alt + 8, ⌘ + 8)

Нажимаем на + - Docker Connection Можно смотреть разную информацию. Удалять, смотреть контейнеры.

Работа с БД (Ultimate Edition)

  • Вкладка Database - + - Data Source (выбираем тип БД) PostgreSQL.
  • Указываем Credentials - Test Connection.
  • Вкладка Schemas, обновить выбираем схему и отмечаем public.
  • После этого IDE подключается к БД и можно увидеть всю структуру БД. И выполнять SQL запросы нажимая Cntl + Enter(Win), ⌘ + Enter(MacOs)

Чтобы SQL распознавался в строковой переменной и была возможность автодополнения перед переменной в строке выше нужно добавить комментарий

// language=SQL

Чтобы нужные колонки одтягивались из нашей БД нужно настроить диалект. Нажимаем Option + Enter(MacOs) на SQL строке, выбираем Change dialect to.... В диалоговом окне выбираем Project SQL Dialect нашу БД, например PostgreSQL и нажимаем ОК.

Прямо в IDE можно менять данные в БД.

Selenium UI Testing (Ultimate Edition)

Позволяет сформировать стартовый проект с подключенными нужными зависимостями (Allure, Selenide и т.д.) Подсвечивает и подсказывает в формировании селекторов(XPath, Css и т.д.) Есть автодополнение разных атрибутов и Css свойств. Tools - Generate Selenium PageObject - открыается браузер, в котором можно перейти на страницу для которой создается Page Object; при нажатии на элементы их можно быстро добавить в текущую страницу.

Также страницу можно:

  • сохранить в scratches
  • нажать иконку копировать и при вставке в дерево проекта будет создан файл с названием класса и содержимым копируемой страницы.

Есть интеграция с Selenoid: при открытии файла browsers.json в верхней части окна можно выбрать ссылку Launch и запустить selenoid node в docker'e

Есть интеграция с Allure:

  • при добавлении аннотации @Issue, @TmsLink можно будет проваливаться непосредственно в задачу, на которую ссылается данный тест.
    Для этого нужно тобы путь к проекту был настроен либо в allure.properties либо в настройках IDE: Preferences - Version Control - Issue Navigation, + - Add Pattern

Работа с Web Services (Ultimate Edition)

Можно генерировать и исполнять запросы с помощью специального языка http для этого создается файл с соответсвующим разрешением (.http)
Может подсказывать параметры, заголовки и т.д.
Можно писать тест на языке javascript и выполнять их прямо из таких файлов.

GET https://httpbin.org/status/200

> {%
client.test("Request executed succesfully", function() {
  client.assert(responce.status == 200, "Response status is not 200");
});
%}

При написании Rest тестов например через библиотеку RestAssured IDE может подсказывать все url, которые есть в вашем проекте или в OpenApi спецификациях.

Чтобы добавить спецификацию идем внизу во вкладку Endpoints, через шестиренку выбираем Configure OpenApi Sources... через + выбираем Swagger Hub, ищем конфигурацию и нажимаем Add Selected.
После этого в автодополнении появятся нужные url.
Если открыть swagger.yaml, то через иконку можно в соседнем открыть swagger ui в котором также можно делать отладку и отправлять запросы.

Плагины

Test Management (Ultimate Edition)

Нужно установить соответсвующий плагин и в настройках IDE - Preferences - Tools - Tms указать путь к ссиетме управления тестами TestRail.

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

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

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

Также этот плагин позволяет хранить кейсы как код (test cases as a code). Они сохраняются в виде .md файлов в папочке specs, их можно обновлять и эти изменения будут отражаться в дереве кейсов справа. Их также можно фильтровать по параметрам, хранить в VSC. Есть специальный формат, который позволяет добавлять статусы, assignee и т.д.

Test Data

Плагин позволяет генерировать данные. Через Option + Enter(MacOs) в строковой переменной можно выбрать тип данных, который нужно сгененрировать.