2016-07-24 16 views
0

Angenommen ich die folgenden einfachen Code haben:Warum sollten wir setUp und tearDown im Test verwenden und nicht nur die Testmethode?

public class SimpleOperations { 
    public int square(int x){ 
     return x*x; 
    } 
} 

nun die bisherige Methode zu testen, wurden die folgenden funktioniert perfekt:

public class Jtest { 
    @Test 
    public void test() { 
     SimpleOperations test = new SimpleOperations(); 
     int output = test.square(5); 
     assertEquals(25, output);  
    } 
} 

Warum sollten wir die Auf- und Abbau-Methoden müssen hinzufügen? Das Ausführen des Codes zeigt, ob die Methoden korrekt sind oder nicht. Welchen Vorteil würden die Methoden setUp/tearDown zum Test hinzufügen? Und wie sollen sie hier sein?

Antwort

0

Sie müssen nicht unbedingt setUp- und tearDown-Methoden hinzufügen, aber es ist üblich, dies zu tun, um dem "Do not repeat yourself (DRY)" - Prinzip der Softwareentwicklung zu folgen.

Manche Leute vermeiden es, setUp und tearDown Methoden zu verwenden, um Tests isoliert zu halten, so dass keine zusätzlichen Variablen oder Objekte, die durch das Setup initialisiert wurden, den aktuellen Test stören.

Wie für Ihr grundlegendes Beispiel sehe ich keinen Vorteil beim Hinzufügen von Setup und TearDown-Methoden.

0

ACHTUNG: Dies ist eine etwas lange Antwort. Ich werde versuchen, es so knapp wie möglich zu halten.

Für ein einfaches Beispiel wie das, das Sie gezeigt haben, ist es nicht erforderlich, die Tests zu konfigurieren oder abzubrechen.

Beachten Sie jedoch die Situation, in der Sie einen komplexen Dienst mit einer Reihe von Abhängigkeiten testen. Sie sollten die Setup-Methode verwenden, um ... nun ... die für Ihren Test benötigten Objekte einzurichten. Dies würde bedeuten, Ihre Abhängigkeiten zu verspotten, so dass der Aufruf der Methoden Ihres Dienstes nicht fehlschlägt. Fehler-Testfälle würden dann nur die Mocks verändern, um einen Fehlerfall zu testen.

Ein Abbau würde helfen, Artefakte, die durch Ihre Tests erzeugt wurden, zu beseitigen, damit der nächste Test funktionieren kann, ohne dass Sie von den Ergebnissen früherer Tests beeinträchtigt werden. Denken Sie daran, die Datensätze in der Testdatenbank (In-Memory-Datenbank) zu löschen, die im Rahmen der Testausführung oder des Testfalls selbst hinzugefügt wurden.

Verwandte Themen