Руби "test/unit", как мне отображать сообщения в утверждениях
У меня есть утверждения в моем сценарии ruby.
Каждое из этих утверждений также имеет сообщение для описания утверждения.
Итак, у меня есть два вопроса, вращающихся вокруг этого
Я хочу, чтобы сообщения, связанные с каждым утверждением, отображались по мере прохождения теста. В настоящее время сообщение отображается только при сбое
Весь тест завершается, когда любое утверждение не выполняется. Как заставить тесты продолжаться, даже если одно утверждение не выполнено?
Пример кода, который я использую
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 ответа
Там нет особого выбора для вывода TAP конкретно. Одним из тестовых фреймворков был Bacon, клон RSpec с выходом TAP, но, похоже, он больше не активен.
Если вам нужна совместимость с Continuous Integration, гем ci_reporter можно использовать для преобразования результатов теста (как из Test::Unit, так и из RSpec) в формат JUnit XML, который позволит работать с Jenkins/Hudson, Bamboo и другими JUnit. CI серверы.
Но в отличие от RSpec, Test/Unit имеет ограничение, когда он не сообщает о пройденных тестах. Здесь обсуждается запуск Test / Unit через форматировщик RSpec HTML, в который будут включены имена проходящих тестов.
Обновление 2015: вы можете захотеть взглянуть на MiniTest, который сейчас набирает популярность и имеет много плагинов для форматирования, а в остальном он очень гибкий / расширяемый.
Вот как я это делаю, но учтите следующее:
- Имейте одно утверждение за тест. Каждый конкретный тест должен быть добавлен для отдельного фрагмента поведения. Например, если текст может отображаться без изображения, выделите его
test_text_appears
а такжеtest_image_appears
тесты. Наличие одного утверждения на тест означает, что когда что-то ломается, вы можете увидеть все ошибочные утверждения, а не только первое утверждение в тесте с большим количеством утверждений. - Попросите имя теста описать, что он должен делать, например:
test_text_appears
, - Какие сообщения об ошибках должны сообщать - я не на 100% уверен, что это хорошая идея, поэтому я открыл отдельный вопрос: что делает хорошее сообщение об ошибке для testunit или других фреймворков в стиле nunit?