2017-02-20 1 views
0

Im Moment zu laufen, wenn Minitest verwenden, wenn Sie das tun:Minitest: Programmgesteuertes Zugangsnamen und Zeit in Anspruch nahm ein Test

bundle exec rake TESTOPTS='--verbose' 

Sie eine Ausgabe wie diese:

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. 

Ich möchte programmatisch Zugriff haben, damit ich die langsamsten Tests auswählen, sie nach der Ausführungszeit sortieren und sie in jedem gewünschten Format ausgeben kann. Idealerweise würde ich dafür eine neue Rake-Aufgabe definieren und dann so etwas ausführen:

bundle exec rake mytask 

oder so.

Allerdings kann ich scheinbar online nichts finden, um auf diese Informationen programmgesteuert zuzugreifen. Ich habe nach benutzerdefinierten Reportern gesucht, aber anscheinend musst du Minitest dafür affektieren, und das möchte ich nicht tun. Die andere Möglichkeit ist, das minitest-reporters Juwel zu installieren, aber ich will und brauche nicht all diese Funktionalität, was ich tun möchte, ist sehr einfach. Ich habe auch den Code im Minitest-Repo gelesen, konnte aber nicht sagen, was ich davon erben sollte, wenn ich meine eigene Klasse erstellen wollte und auf was ich zugreifen sollte, um die Laufzeit und den Namen von der Test.

Gibt es eine Möglichkeit, programmgesteuert auf diese Informationen zuzugreifen? Zum Beispiel Zugriff auf die Berichte von Minitest, sobald alle Tests beendet sind? Wie machst du es, diejenigen von euch, die benutzerdefinierte Reporter schreiben, ohne ein Juwel oder Affen-patchen MiniTest? Ich denke, das sollte eine leichte Sache sein.

Antwort

1

Sie können write your own reporter (keine Notwendigkeit, Affen-Patch, oder MiniTest-Reporter verwenden), aber es gibt einen einfacheren Weg. Die ausführliche Ausgabe wird so formatiert, dass Sie parse itsort verwenden, können:

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

Verwandte Themen