Руби "test / unit", как мне отображать сообщения в утверждениях - PullRequest
1 голос
/ 09 декабря 2011

У меня есть утверждения в моем скрипте ruby.

Каждое из этих утверждений также имеет сообщение для описания утверждения.

Итак, у меня есть два вопроса, вращающихся вокруг этого

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

  2. Весь тест завершается, когда любое утверждение не выполняется. Как мне сделать тесты продолжаются, даже если одно утверждение не выполнено?

Пример кода, который я использую

assert_match("hey", "hey this is a test", "The word exists in the string")

Таким образом, вывод в настоящее время выглядит как -

ruby ruby11.rb -v v
Loaded suite ruby
Started
test_ruby(Ruby): 
F

Finished in 40.555587 seconds.

  1) Failure:
test_ruby11(Ruby11) [ruby11.rb:73]:
Text box not displayed
<false> is not true.

1 tests, 3 assertions, 1 failures, 0 errors

И я хочу, чтобы это выглядело как

ruby ruby.rb -v v
Loaded suite ruby
Started
test_ruby(Ruby): 
F

ok 1 - First test successful
ok 2 - The text is displayed
ok 3 - The image is present
not ok 4 - Text box not displayed
ok - The picture is visible

Finished in 40.555587 seconds.

  1) Failure:
test_ruby(Ruby) [ruby11.rb:73]:
Text box not displayed
<false> is not true.

1 tests, 4 assertions, 1 failures, 0 errors

Таким образом, на приведенном выше желаемом дисплее все состояния утверждений отображаются как время выполнения теста. (Что-то вроде TAP в Perl). Я новичок в ruby, так что я уверен, что я делаю что-то не так.

Также я пробовал подробный параметр ruby ruby.rb -v v во время выполнения скрипта. Но это тоже не помогает.

Помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

Вот как я это делаю, но учтите следующее:

  1. Имейте одно утверждение за тест. Каждый конкретный тест должен быть добавлен для отдельного фрагмента поведения. Например, если текст может появиться без появления изображения, выполните отдельные тесты test_text_appears и test_image_appears. Наличие одного утверждения на тест означает, что когда что-то ломается, вы можете увидеть все ошибочные утверждения, а не только первое утверждение в тесте с большим количеством утверждений.
  2. Попросите имя теста описать, что он должен делать, например test_text_appears.
  3. Что должны сообщать сообщения об ошибках - я не на 100% уверен, что это хорошая идея, поэтому я открыл отдельный вопрос: Что дает хорошее сообщение об ошибке для testunit или других фреймворков в стиле nunit?
0 голосов
/ 10 декабря 2011

Нет особого выбора для вывода TAP. Одним из тестовых фреймворков был Bacon , который был клоном RSpec с выходом TAP, но, похоже, он больше не активен.

Если вам нужна совместимость с Continuous Integration, гем ci_reporter можно использовать для преобразования результатов теста (из обоих Test :: Unit и RSpec) в формат JUnit XML что позволит работать с Jenkins / Hudson, Bamboo и другими CI-серверами, поддерживающими JUnit.

Но в отличие от RSpec, у Test / Unit есть ограничение, когда он не сообщает о пройденных тестах. Существует обсуждение запуска Test / Unit с помощью средства форматирования RSpec HTML, которое будет включать имена проходящих тестов здесь .

Обновление 2015: вы можете захотеть взглянуть на MiniTest, который сейчас набирает популярность и имеет много плагинов для форматирования, а в остальном он очень гибкий / расширяемый.

...