问题描述
我正在处理具有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
摘要为我提供了大多数情况下所需的大部分上下文。