Gauge - это внешний DSL для выражения поведения теста и данных вне кода. В отличие от других внешних DSL для тестирования, Gauge не носит предписывающий характер, поскольку использует Markdown. Об этом мы говорили раньше.

Несмотря на преимущества внешнего DSL, такие как меньший объем кода, удобочитаемость, возможность повторного использования и т. Д., Команды предпочитают создавать внутренние DSL с помощью языка программирования вместе со своими IDE, потому что легче управлять кодом с помощью завершения кода, рефакторинга, выполнения и т. Д.

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

Gauge хочет решить эту проблему, перенеся все функции, которые вы ожидаете от IDE, во внешние DSL, но без привязки к поставщику. Итак, мы разработали Gauge для работы на всех популярных языках, предоставили хуки для расширения для нового языка, создали плагины для Visual Studio и Intellij IDEA.

Но разработка подключаемых модулей для этих IDE или работа с их SDK для разработки подключаемых модулей - это, мягко говоря, головная боль. Мы дублировали функции во всех IDE. Это все равно что переписать что-то сложное, например компилятор для каждой IDE. Должен быть способ получше.

Оказывается, есть. Команда VS Code решила эту проблему, создав Протокол языкового сервера. Мы можем реализовать такие функции IDE, как завершение кода, переход к определению, ссылки, диагностика и т. Д. Вне VS Code. Протокол представляет собой открытый стандарт, который активно разрабатывается и принимается другими IDE и языками. В последнем выпуске Gauge все функции IDE теперь встроены в Gauge, а не в отдельные плагины IDE!

Новое поколение плагинов

Благодаря первоклассной поддержке LSP, мы также объявляем о нашем новом подключаемом модуле VS Code и официальной поддержке подключаемого модуля Gauge JavaScript. Новый плагин взаимодействует с Gauge как с клиентом LSP, обеспечивая отличные возможности для создания и сопровождения тестов.

Для начала установите VS code, Gauge и запустите следующее.

$ gauge init js
$ code --install-extension getgauge.gauge
$ code .

Давайте изучим эти особенности LSP!

Код линзы

Кодовая линза отображает полезную информацию о спецификациях и реализациях Gauge.

Например, открытие example.spec в примере проекта показывает «Run Spec» и «Run Scenario» в виде ссылки над заголовками спецификаций и сценариев. Щелчок по нему запускает спецификацию или сценарий и отображает результат на панели вывода. Это исполняемый (или исполняемый) документ!

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

Диагностика

Конечная точка диагностики LSP показывает ошибки и предупреждения относительно спецификации для быстрой обратной связи об ошибках синтаксического анализа или проверки, нереализованных шагах и т. Д.

Кодовое действие

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

Автозавершение кода

Получайте предложения с помощью автозавершения кода при редактировании спецификаций. Языковой сервер автоматически завершает шаги, концепции, параметры (шаг, таблица и файл) и т. Д.

Перейти к определению

Конечная точка LSP перейти к определению связывает шаг с его реализацией для быстрой навигации или просмотра кода за шагом.

Форматирование

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

Другие редакторы

Подключить ваш любимый редактор к Gauge легко. Сообщество пишет клиентов и инструменты для всех популярных редакторов. Команда Visual Studio (не путать с VS Code) только что выпустила превью для версии 2017.

Мы протестировали эти функции на vim / neovim с помощью плагина языковой клиент, и он сработал из коробки!

Будущее

В ближайшие месяцы мы добавим в Gauge ряд полезных функций и представим их через LSP. Мы ценим ваши отзывы, пожалуйста, записывайте вопросы или предложения!

Удачного тестирования.