Minitest:以编程方式访问测试运行的名称和时间

时间:2017-02-20 01:25:43

标签: ruby rake customization minitest

目前,当使用minitest时,如果你这样做:

bundle exec rake TESTOPTS='--verbose'

你得到这样的输出:

Text you typed in the describe#test_0001_test description = 0.11 s = .
Text you typed in the describe#test_0003_another test description = 0.10 s = .
...etc.

我希望以编程方式访问此项,以便我可以选择最慢的测试,按照它们运行的​​时间对它们进行排序,然后以任何我想要的格式将它们打印到stdout。理想情况下,我会为此定义一个新的Rake任务,然后执行类似的操作:

bundle exec rake mytask

或其他什么。

但是,我似乎无法在线找到有关如何以编程方式访问此信息的任何内容。我搜索了自定义记者,但显然你必须为此修补Minitest,我不想这样做。另一种选择是安装minitest-reporters gem,但我不想也不需要所有这些功能,我想做的事情非常简单。我还阅读了Minitest仓库中的代码,但是如果我想创建自己的类,那么无法解决继承的问题,以及为了获得运行时间和访问名称而无法访问的内容。测试。

有没有办法以编程方式访问此信息?例如,一旦所有测试完成运行,访问minitest生成的报告?你是怎么做到的,你那些编写自定义记者而不需要宝石或猴子修补最小的人?我觉得这应该是一件容易的事情。

1 个答案:

答案 0 :(得分:1)

你可以write your own reporter(不需要猴子补丁,或使用minitest-reporter),但有一种更简单的方法。详细输出的格式使您可以parse it使用sort

bundle exec rake TESTOPTS='--verbose' | sort -t = -k 2 -g