2012-05-15 7 views
6

Sah schon this question, und das spiegelt mehr oder weniger, wie ich derzeit meine ganze Suite laufen.Wie führe ich eine volle MiniTest-Suite ohne Rake?

Zusätzlich habe ich Setup die folgende Rake Aufgabe:

Rake::TestTask.new do |t| 
    t.name = "spec:models" 
    t.libs << "test" 
    t.pattern = "spec/models/*_spec.rb" 
end 

Aber ich merke, wenn ich dies mit time rake spec:models laufen, dass es in etwa 2,36 Sekunden abgeschlossen ist. Wenn ich alle einzelnen Tests in diesem Verzeichnis unter Verwendung von ruby /path/to/spec.rb (alle sind derzeit von ActiveRecord isoliert - keine persistance noch, also super schnell), ihre kumulative Gesamtbenutzerzeit ist 2,36 Sekunden, aber ich merke auch, während jede Datei 0,4 nimmt Benutzer Sekunden, um von Anfang bis Ende auszuführen, ist die tatsächliche "Test" -Zeit, die von MiniTest gemeldet wird, viel, viel schneller (so dass meine ganze Suite nach dem Laden von Abhängigkeiten in weniger als 0,15-Sekunden, nicht 2,36 Sekunden ausgeführt werden sollte).

Beispiel (für eine Spec-Datei):

Started 

11/11:   100% |======================================| Time: 00:00:00 

Finished in 0.02223s 
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips 
ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total 

Ich vermute, dass Rake Bibliotheken zwischen der Ausführung jeden Test nachlädt, und dass für die zusätzliche Zeit für Rechnungswesen. Kann ich das trotzdem bestätigen oder meine ganze Suite ohne Rake laufen lassen?

Btw, wenn ich „Benutzer Zeit“, sagen früher, ich beziehe mich auf die erste Zahl ausgegeben von time meinem Rubin Befehl vorangestellt wird eine einzige Testdatei ausführen können, so time ruby /path/to/spec.rb = ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total

+0

Haben Sie jemals eine Lösung gefunden? –

Antwort

1

Dies wird jeder laufen Tests im spec Verzeichnis und dessen Unter mit einem _spec.rb am Ende des Dateinamens:

ruby -Itest spec/**/*_spec.rb 
+1

Hmm, das scheint nur eine Datei zu laufen (meine finale Ausgabe mit 'ruby -Itest spec/models/* _ spec.rb' zeigt 5 Tests abgeschlossen, während 'rake spec: models' oben zeigt, dass 77 Tests abgeschlossen sind). Was ist damit? – neezer

+0

Ich würde gerne wissen, warum Matthews Vorschlag auch nicht für mich funktioniert. –

+1

Ich denke, Sie brauchen wahrscheinlich Zitate um spec/**/_ spec.rb oder Ihre Shell wird es erweitern, ich vermute, dass nur die eine Datei, es sei denn, Sie verwenden eine Shell, die diese Notation versteht. – Ghoti

5

erstellen Sie eine Datei spec.rb im obersten Verzeichnis Ihres Projekts:

$:<<'spec' # add to load path 
files = Dir.glob('spec/**/*.rb') 
files.each{|file| require file.gsub(/^spec\/|.rb$/,'')} 

Run it:

ruby spec.rb 

Wenn dies für Sie arbeitet, können Sie die spec.rb Datei umbenennen, wie Sie möchten, oder es zu einer besseren Position verschieben, oder die Lastpfade ändern, wie Sie möchten, usw.

Verwandte Themen