2017-02-20 14 views
0

此刻,如果你這樣做: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. 

我想以編程方式訪問它,以便我可以選擇最慢的測試,按它們運行的​​時間對它們進行排序,並以任何我想要的格式將它們打印到標準輸出。理想情況下,我會爲此定義一個新的Rake任務,然後執行如下操作:

bundle exec rake mytask 

什麼的。

但是,我似乎無法找到任何關於如何以編程方式訪問此信息的任何信息。我搜索了一些習慣性的記者,但顯然你必須爲此爲猴子打補丁,我不想那樣做。另一種選擇是安裝minitest-reporters寶石,但我不想也不需要所有這些功能,我想要做的事情非常簡單。我也仔細閱讀了Minitest回購代碼中的代碼,但是如果我想創建自己的類,並且不知道要繼承什麼,以及要訪問哪些內容以便獲得運行時間和名稱考試。

有沒有辦法以編程方式訪問此信息?例如,一旦所有測試完成後,訪問minitest生成的報告?你如何做到這一點,那些寫自定義記者的人不需要寶石或猴子補丁?我覺得這應該是一件容易的事情。

回答

1

你可以write your own reporter(不需要猴子補丁或使用minitest記者),但有一個更簡單的方法。詳細輸出以這樣的方式被格式化,可以使用parse itsort

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