Как получить огурец / охранник для фильтрации по тегам типа @wip? - PullRequest
6 голосов
/ 08 февраля 2012

Я использую spork and guard, и все прошло очень хорошо с моими тестами RSpec, которые все были выполнены правильно.Чтобы ускорить тесты, я мог успешно отфильтровать свои тесты RSpec по тегам, которые я поместил в мой файл .rspec.

.rspec

--colour
--debug
--tag focus
--tag now

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

Как я могу заставить огурца / spork / guard уважать теги типа @wip, @now и т. Д. И запускать только эти тесты?Есть ли какой-нибудь эквивалент файла .rspec для тегов огурца?

Ответы [ 5 ]

3 голосов
/ 10 февраля 2012

Вы можете использовать профиль огурца, чтобы определить теги, которые вы хотите выполнить.Используя файл YML, вы можете определить профиль, который будет выполнять ваши теги @wip:

wip: --tags @wip

Дополнительная информация по адресу:

https://github.com/cucumber/cucumber/wiki/cucumber.yml

Вы также можете просто запуститьcucumber из командной строки и передайте ему аргумент -t:

cucumber -t @wip,@now

Из справки (cucumber -h):

Выполняйте только те функции или сценарии, теги которых соответствуют TAG_EXPRESSION,Сценарии наследуют теги, объявленные на уровне объектов.Самый простой TAG_EXPRESSION - это просто тег.Пример: --tags @dev.Когда тег в выражении тега начинается с ~, это представляет логическое НЕ.Пример: --tags ~ @ dev.Выражение тега может иметь несколько тегов, разделенных запятой, которая представляет логическое ИЛИ.Пример: --tags @ dev, @ wip.Опция --tags может быть указана несколько раз, и это представляет логическое И.Пример: --tags @ foo, ~ @ bar --tags @zap.Это представляет логическое выражение (@foo ||! @Bar) && @ zap

Следовательно, теоретически мы можем использовать guardfile со следующими параметрами:

guard 'cucumber', :cli => "--drb --tags @now" do
  watch(%r{^features/.+\.feature$})
  ...
end
2 голосов
/ 04 июня 2013

Не уверен, когда эта опция была введена, но сторож-огурец имеет возможность сфокусироваться на определенном теге (который отличается от жесткого кодирования определенного тега, чтобы всегда выполнять фильтрацию).Вы можете оставить эту опцию конфигурации в своем Guardfile и использовать тег фокуса только тогда, когда вам это нужно:

# Guardfile
guard 'cucumber', :focus_on => 'myfocustag' do
  ...
end

# example.feature
Feature: Example

  @myfocustag
  Scenario: Only run this one
  ...

cucumber-guard затем отфильтрует эти сценарии перед передачей их команде cucumber.Удаление этих тегов привело бы к поведению по умолчанию (выполнение всех сценариев, а не ни одного).

2 голосов
/ 09 июня 2012

Важно понять, что существует разница между тегами и профилями .Я также использую Guard с Cucumber и был разочарован тем, что профиль по умолчанию продолжал использоваться, и ни один из моих тегов @wip (Work In Progress) не был выбран.Теперь понятно, почему это так.Как утверждают некоторые на других форумах, мой профиль по умолчанию отфильтровывает @ wip.

<%
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
base_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
std_opts = "#{base_opts} --strict --tags ~@wip"
wip_opts = base_opts
%>
default: --drb <%= std_opts %> features
wip: --drb <%= wip_opts %> --tags @wip:3 --wip features
rerun: --drb <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip

"std_opts =" # {base_opts} --strict - теги ~ @ wip"<= <i>wip отфильтровывается здесь в std_opts

Я хочу использовать профиль 'wip', который будет включать в себя сценарии или функции, отмеченные '@wip'! *

wip: --drb <% = wip_opts%> - теги@wip: 3 --wip features "<= <i>число представляет максимальное количество сценариев для запуска;«--wip» означает, что Cuc ожидает, что тест не пройдёт (потому что мы над ним работаем)

Итак, теги уже настроены, и я добавил «@wip» в свой *.файл функции.Как насчет профилей?При использовании Guard (Spork) для использования профиля «wip» его необходимо настроить.Это имеет смысл;компьютер не может прочитать мои мысли!Обновите Guardfile, чтобы использовать профиль 'wip'.

guard 'cucumber', :cli => "--drb -p wip", :all_on_start => false, :all_after_pass => false do
  watch(%r{^features/.+\.feature$})
  watch(%r{^features/support/.+$})          { 'features' }
  watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
end

guard 'cucumber',: cli => "--drb -p wip"<= <i>'- p' для указания желаемого профиля

И теперь мои сценарии успешно фильтруются с помощью 'wip'.

0 голосов
/ 26 июня 2015

Теперь, если вы хотите, чтобы Guard всегда запускал @wip, как я, тогда добавьте:

cucumber.yml

guard: --format pretty --tags @wip

Guardfile

guard 'cucumber', :command_prefix => 'spring', :cli => '--profile guard', :bundler => false do
  # your watches
end

, что отслеживаемый файл изменяется, тогда будет запускаться только @wip, но также когда вы набираете cucumber в консоли охраны.

0 голосов
/ 10 февраля 2012

Хотя теоретически можно было бы сделать эту работу, используя профили огурцов, которые я обнаружил, я должен был использовать guardfile.

Оригинальный файл защиты

guard 'cucumber', :cli => "--drb" do
  watch(%r{^features/.+\.feature$})
  ...
end

модифицированный файл защиты

guard 'cucumber', :cli => "--drb --tags @now" do
  watch(%r{^features/.+\.feature$})
  ...
end
...