Wie kontrolliere ich in Ruby die Reihenfolge, in der Test :: Unit-Tests ausgeführt werden?

8

Zum Beispiel, wenn diese Tests ausgeführt werden, möchte ich sicherstellen, dass test_fizz immer zuerst ausgeführt wird.

%Vor%

Aktualisieren : Warum möchte ich das tun? Mein Gedanke ist, dass ein früheres Scheitern durch bestimmte Tests (die die einfacheren, grundlegenderen Methoden testen) es leichter macht, Probleme im System aufzuspüren. Zum Beispiel hängt der Erfolg von bar davon ab, dass fizz korrekt funktioniert. Wenn fizz kaputt ist, möchte ich das sofort wissen, denn es gibt keine Notwendigkeit, sich um bar zu sorgen, was ebenfalls scheitern wird, aber mit viel komplizierterer Ausgabe in den Testergebnissen.

    
FMc 20.11.2009, 19:59
quelle

3 Antworten

4

Benennen Sie die Tests, die Sie zuerst ausführen möchten, mit einem alphabetisch niedrigen Namen.

%Vor%

Für die Lesbarkeit des Codes könnte dies je nach Standpunkt als hässlich oder hilfreich angesehen werden.

    
Jonathan Julian 21.11.2009, 20:40
quelle
5

Tests innerhalb derselben Testklasse werden in der Reihenfolge aufgerufen, in der sie definiert sind. Testklassen werden jedoch in alphabetischer Reihenfolge nach Klassennamen ausgeführt.

Wenn Sie wirklich genaue Kontrolle benötigen, definieren Sie die Fizz- und Bar-Methoden mit einem anderen Präfix als test_ und rufen Sie sie innerhalb einer test_fizz_bar -Methode in der richtigen Reihenfolge auf und führen Sie den Balken bei Erfolg des Fizz-Vorgangs aus.

BEARBEITEN: Es sieht so aus, als würden sich verschiedene Unit-Test-Frameworks unterschiedlich verhalten. Für JUnit in Eclipse scheint es, dass die Testfälle in zufälliger Reihenfolge ablaufen: Ordering unit Tests in der JUnit-Ansicht von Eclipse

    
Joy Dutta 20.11.2009 20:16
quelle
5

Sie können den Testauftrag mit Test::Unit::TestCase#test_order = :defined

definieren

Beispiel:

%Vor%

Das Ergebnis:

%Vor%

Ohne test_order = :defined erhalten Sie die alphabetische Reihenfolge:

%Vor%     
knut 01.07.2014 09:31
quelle

Tags und Links