我正在开发一个包含 731 项测试的应用程序,如果有 6 项测试失败,我必须滚动浏览 731 行以尝试找出每个失败,以便解决问题。
有没有办法让 minitest 在底部打印所有失败的测试?或者有什么可以帮助我确定哪些测试失败了?
我经常使用大量测试,其中一些测试具有相当详细的诊断输出。因此,我将
STDOUT
和 STDERR
重定向到日志文件,然后 grep
文件中出现如下错误:
bundle exec rake test:all &> test.log
grep -P -i -C3 'error|fail' test.log
输出示例:
...
Failure:
FooBarTest#test_foo [/path/to/foo_bar_test.rb:64]:
Expected: 3
Actual: 4
...
Finished in 3.945161s, 13.9411 runs/s, 162.4775 assertions/s.
55 runs, 641 assertions, 1 failures, 0 errors, 0 skips
这里,
grep
运行时带有以下选项:-P
:使用 Perl 正则表达式,-i
:不区分大小写,-C3
:打印匹配行上方 3 行和下方 3 行,以提供失败测试的更多上下文。
有时我会跟进并查看编辑器中的测试日志文件以获取有关诊断消息等的详细信息。但是
grep
摘要为我提供了大多数情况下所需的大部分上下文。
使用 minitest-reporters gem 时,可以使用运行结束时的失败测试输出:
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new(print_failure_summary: true))