2009-06-26 3 views
0

gleiche Frage wie waloeiii in twitter:Wie kann AutoSpec/Test nicht die gesamte Testsuite ausführen, nachdem alles grün wird?

Wie kann ich Autospec haben/Test nicht die vollständige Testsuite nach allem, was geht grün laufen? Der nächste Test, den ich schreibe, wird rot sein!

Ich würde lieber die vollständige Testsuite manuell ausführen.

By the way, habe ich versucht, eine versagende spec Zugabe:

it "should flunk" do 
    flunk 
end 

aber Autospec scheint es zu ignorieren, wenn es, wie es sich anfühlt.

+0

Sicherlich gibt es eine Möglichkeit, Tests einzeln auszuführen. –

+0

Ja natürlich. Und autospec führt automatisch individuelle Tests für Sie aus. Was ich an Autospec einfach nicht mag, ist, dass es irgendwann die gesamte Testsuite wiederholt, auch wenn Sie noch Fehler oder ausstehende Spezifikationen haben. – gsmendoza

Antwort

1

bisschen spät, aber ich war für diese Suche auch so dachte ich, meine Lösung schreiben würde:

Fügen Sie die folgenden ~ /.autotest:

class Autotest 
    def rerun_all_tests 
    end 
end 
+0

Hah! Werde das definitiv ausprobieren :) – gsmendoza

0

Ich denke, dass dies von Entwurf ist - wenn Sie eine fehlerhafte Spezifikation beheben, und alle anderen Spezifikationen in dem Abschnitt grün sind, dann AutoSpec wird die gesamte Suite erneut ausführen - dies wird Ihnen sagen, ob die Fehlerbehebung in einem Bereich angewendet wurde Ihr Projekt hat ein anderes Projekt gestartet oder nicht.

Wenn Sie nur die Spezifikationen ausführen möchten Sie zu jeder Zeit arbeiten, dann können Sie es von der Befehlszeile tun:

ruby spec/controllers/my_spec.rb 

oder aus Textmate von cmd + r von Ihrem spec drücken Datei. Sie sollten Ihre gesamte Suite trotzdem noch einmal ausführen, da Sie sonst möglicherweise fehlerhafte Spezifikationen verpassen.

1

Sind Sie sicher, dass Sie nicht über das beabsichtigte Verhalten der Autotest-Heuristiken verwirrt sind?

Mein Verständnis ist, dass es Tests für das, was sich geändert hat, ausgeführt wird und fehlgeschlagene Tests weiter laufen lassen, bis sie bestanden haben und dann, wenn sie bestanden haben, wird die ganze Testsuite ausgeführt, um sicherzustellen, dass nichts kaputt geht.

In der Tat ist es konservativ und sicherzustellen, dass Sie keine Nebenwirkungen eingeführt haben, die andere unabhängige Tests brechen, was wahrscheinlich eine gute Sache ist. Das Problem ist natürlich, dass wenn Sie schnelle Rot - Grün - Zyklen machen, Sie Ihre ganze Suite viel laufen lassen werden.

Wenn Sie diese Verhaltensweisen ändern möchten, müssen Sie die Heuristik in der Datei rails_autotest.rb für den Test bearbeiten.

+0

Danke, dass Sie auf e rails_autotest.rb hingewiesen haben. Ich werde es mir ansehen. Übrigens, selbst wenn ich einen gefälschten fehlgeschlagenen Test hinzufüge (siehe oben), wiederholt autospec manchmal immer noch die gesamte Testsuite. – gsmendoza

+0

Ich beendete das Deaktivieren des genannten Verhaltens in ZenTest-4.0.0/lib/autotest.rb. Danke für den Hinweis! – gsmendoza

1

Sie können die folgende Option verwenden, um dieses Verhalten zu vermeiden -

autospec --no-full-after-failed 
+0

Hallo Josh. Ich benutze ZenTest 4.3.1 und rspec 1.2.9.Selbst mit --null-full-after-failed, wenn ich eine fehlerhafte Spezifikation übergebe, wiederholt autotest die gesamte Testsuite. – gsmendoza

+0

Dies funktioniert gut mit ZenTest 4.7.0 –