2 Stimmen

JUnit: Erwartete Zeichenfolgenausgabe externalisieren

Ich muss die Zeichenfolgenausgabe einer Methode für verschiedene Parameter testen. Mein Problem ist, dass es eine ziemlich große Ausgabe erzeugt, und es wird ziemlich mühsam, die erwartete Ausgabe mit einem Java-String zu erstellen.

Ich dachte daran, die erwartete Ausgabe in eine Datei auszulagern, aber ich stoße auf Probleme wie Zeilenumbrüche, Unterschiede in der Leerzeichen usw.

Ich frage mich, ob es einen praktischeren Weg gibt, zwei große Zeichenfolgen in jUnit zu vergleichen.

Vielen Dank

1voto

Joe Punkte 26653

Das Lesen eines Strings aus einer Datei, ohne ihn zu beschädigen, ist sehr gut möglich (Wie erstelle ich einen Java-String aus dem Inhalt einer Datei?). Wenn Ihr Test beim Vergleich scheitert, ist entweder das erwartete oder das tatsächliche Ergebnis falsch: Als Autor dieses Tests müssen Sie entscheiden, welches.

Sie können eine wörtliche Vergleich vermeiden, indem Sie Eigenschaften überprüfen: testen Sie zum Beispiel, ob er einen Teilstring enthält oder die erwartete Anzahl von Zeilenumbrüchen.

Im Allgemeinen deutet das Testen eines großen Strings darauf hin, dass Sie versuchen, das Verhalten eines großen Systems in einem einzigen Test zu prüfen. Überlegen Sie, die Tests in kleinere Einheiten aufzuteilen, damit die Komponenten einzeln überprüft werden können. Dadurch erhalten Sie auch viel klarere Hinweise, wo Probleme liegen.

0voto

Ravi Vasamsetty Punkte 403

Eine Möglichkeit, die mir einfällt, ist eine Factory-Klasse, die Ihre erwarteten Zeichenketten produzieren würde.

public class MyBigStringProducer {
  public static expectedAsOutputForXXXMethod () {
    // Anstatt einer Textdatei, hier wird
    // wo Ihre große Zeichenkette sein würde
    return "meine große Zeichenkette";
  }
}

In Ihrer Testklasse MyBigStringProducer.expectedAsOutputForXXXMethod(); Es gibt vielleicht effizientere Möglichkeiten, es zu tun, aber das ist eine Idee, die Sie verwenden können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X