Как сравнить результаты двух запусков RSpec? - PullRequest
1 голос
/ 12 августа 2011

У меня довольно большой набор спецификаций ( watirspec ), я запускаю его на Ruby gem ( safariwatir ), и есть много ошибок:

1002 examples, 655 failures, 1 pending

Когда я вносил изменения в гем и снова запускал набор, иногда проходило множество ранее неудачных спецификаций (52 в этом примере):

1002 examples, 603 failures, 1 pending

Я хотел бы знать, какие ранее неработающие спецификации теперь проходят, и, конечно, если какие-то из ранее проходящих спецификаций теперь терпят неудачу. Теперь я сравниваю результаты, чтобы запустить тесты с параметром --format documentation и вывести результаты в текстовый файл, а затем развести файлы:

rspec --format documentation --out output.txt

Есть ли лучший способ? Сравнение текстовых файлов - не самый простой способ увидеть, что изменилось.

Ответы [ 3 ]

1 голос
/ 12 августа 2011

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

0 голосов
/ 12 августа 2011

Я реализовал решение @ Serabe для вас.Смотрите суть: https://gist.github.com/1142145.

Поместите файл my_formatter.rb в вашу папку spec и запустите rspec --formatter MyFormatter.Форматировщик будет сравнивать текущий результат выполнения с предыдущим результатом и выводит разницу в виде таблицы.

ПРИМЕЧАНИЕ. Форматер создает / перезаписывает файл result.txt в текущей папке.

Пример использования:

D:\Projects\ZPersonal\equatable>rspec spec --format MyFormatter
..........
No changes since last run

Finished in 0.011 seconds
10 examples, 0 failures

No changes since last run строка была добавлена ​​форматером.

А теперь я намеренно сломал одну и перезапустил rspec:

D:\Projects\ZPersonal\equatable>rspec spec --format MyFormatter
..F.......
Affected tests (1).
PS CS Description
.  F  Equatable#== should be equal to the similar sock
PS - Previous Status
CS - Current Status

Failures:

  1) Equatable#== should be equal to the similar sock
     Failure/Error: subject.should == Sock.new(10, :black, 0)
       expected: #<Sock:0x2fbb930 @size=10, @color=:black, @price=0>
            got: #<Sock:0x2fbbae0 @size=10, @color=:black, @price=20> (using ==)
       Diff:
       @@ -1,2 +1,2 @@
       -#<Sock:0x2fbb930 @color=:black, @price=0, @size=10>
       +#<Sock:0x2fbbae0 @color=:black, @price=20, @size=10>
     # ./spec/equatable_spec.rb:30:in `block (3 levels) in <top (required)>'

Finished in 0.008 seconds
10 examples, 1 failure

Failed examples:

rspec ./spec/equatable_spec.rb:29 # Equatable#== should be equal to the similar sock

Таблица с затронутыми спецификациямибыл добавлен форматтером:

Affected tests (1).
PS CS Description
.  F  Equatable#== should be equal to the similar sock
PS - Previous Status
CS - Current Status

Если какой-либо статус спецификации отличается от текущего и предыдущего прогона, форматтер выводит предыдущий статус, текущий статус и описание спецификации.''означает пройденные спецификации, «F» - неудачный, «P» - ожидающий.

Код далек от совершенства, поэтому не стесняйтесь критиковать и изменять его по своему усмотрению.

Надеюсь, этопомогает.Дайте знать, если у вас появятся вопросы.

0 голосов
/ 12 августа 2011

Я не знаю ничего такого, что могло бы сделать именно это. Сказав, что, если вам это так нужно, вы не возражаете потратить некоторое время на взлом собственного форматера, взгляните на Spec :: Runner :: Formatter :: BaseFormatter . Это довольно хорошо задокументировано.

...