Einen schwer erreichbaren Codepfad testen

7

Immer wenn ich einen bestimmten Code-Pfad ausführen möchte, der sonst nur unter einem schwer reproduzierbaren condition like:

erreicht würde %Vor%

I or it mit true value:

%Vor%

Gibt es einen eleganteren Ansatz?

    
Clodoaldo Neto 28.12.2012, 13:03
quelle

5 Antworten

13

Ich denke, mehr elegant way verwendet the logical negation operator (!) als;

%Vor%

Aber sicherer Weg zu Debugging- oder Testzwecken Sie können eine Präprozessordirektive verwenden (wie in meinem commet). Wenn Sie mit dem Testen fertig sind, entfernen oder ändern Sie #define UnreachableTest

%Vor%     
Kaf 28.12.2012, 13:09
quelle
13

Eine elegantere Lösung sind Mocks. Treffen Sie Entscheidungen basierend auf Abhängigkeiten oder Parametern:

%Vor%

Und in Ihrem System unter Test:

%Vor%     
Sergey Berezovskiy 28.12.2012 13:04
quelle
3

Ihr Ansatz mit "wahr oder" und der Ansatz von if (! Bedingung) sind die einfachsten. Hier ist ein Ansatz, den ich für große Programme mag

Erstelle eine Funktion, nennen wir sie testme (const string). Anstatt true in if test einzufügen, fügen Sie testme mit einer Zeichenfolge ein, die diesen Codeabschnitt identifiziert.

%Vor%

Dann können Sie mit irgendeiner Art von Konfigurationsdatei oder Argumenten zu Ihrem Programm (ich bevorzuge Konfiguration), vollständig kontrollieren, wenn testme ("Standort 123") wahr zurückgibt. UND Sie können die gleiche Funktion an vielen Orten verwenden. Ändern Sie einfach die Konfigurationsdatei, um jeden zu testen.

    
Daniel Goldfarb 28.12.2012 13:22
quelle
2

Ich nehme an, das ist kein Unit-Test-Szenario, da es in der Frage nicht erwähnt wurde. Der einfachste Weg, um Code wie diesen on-the-fly zu testen, ist die Verwendung des Befehls Set Next Statement des Debuggers.

Legen Sie bei Bedarf einen Haltepunkt für die if () -Anweisung fest, oder schieben Sie den Code schrittweise, bis er diese Anweisung erreicht. Klicken Sie dann mit der rechten Maustaste auf die nächste Zeile im if () - Anweisungshauptteil und wählen Sie "Nächste Anweisung festlegen". Der Code setzt die Ausführung in dieser Zeile fort und überspringt das if () vollständig.

    
Hans Passant 28.12.2012 13:17
quelle
2

Geben Sie den zu testenden Code in einer separaten Methode ein. Dann können Sie die Methode aufrufen und die Bedingung umgehen. Jetzt müssen Sie sich nicht mehr darum kümmern, "wahr" hinzuzufügen oder, was noch wichtiger ist, zu vergessen, es zu entfernen.

Sie können auch Komponententests für die Methode hinzufügen, damit Sie die übergebenen Parameter ändern und alle gewünschten Szenarien testen können.

    
mosca125 28.12.2012 15:32
quelle

Tags und Links