8 Stimmen

Wie organisiert man C++-Testanwendungen und zugehörige Dateien?

Ich arbeite an einer C++-Bibliothek, die (neben anderen Dingen) Funktionen zum Lesen von Konfigurationsdateien hat; und ich möchte Tests dafür hinzufügen. Bis jetzt hat das dazu geführt, dass ich viele gültige und ungültige Konfigurationsdateien erstellt habe, jede mit nur ein paar Zeilen, die eine bestimmte Funktionalität testen. Aber es ist jetzt sehr unhandlich geworden, da es so viele Dateien gibt, und auch viele kleine C++-Testanwendungen. Irgendwie kommt mir das falsch vor :-) haben Sie also Tipps, wie man all diese Tests, die Testanwendungen und die Testdaten organisieren kann?

Hinweis: Die öffentliche API der Bibliothek selbst ist nicht leicht zu testen (sie erfordert eine Konfigurationsdatei als Parameter). Die pikanten, fehleranfälligen Methoden zum Lesen und Interpretieren von Konfigurationswerten sind privat, so dass ich keine Möglichkeit sehe, sie direkt zu testen?

Also: Würden Sie beim Testen gegen echte Dateien bleiben; und wenn ja, wie würden Sie all diese Dateien und Anwendungen so organisieren, dass sie noch wartbar sind?

0voto

andreas buykx Punkte 12236

Unter der Annahme, dass Sie die Kontrolle über das Design der Bibliothek haben, würde ich erwarten, dass Sie in der Lage wären, so zu refaktorieren, dass Sie die Belange der tatsächlichen Datei lesen von der Interpretation es als eine Konfigurationsdatei zu trennen:

  1. Die Klasse FileReader liest die Datei und erzeugt einen Eingabestrom,
  2. Die Klasse ConfigFileInterpreter validiert/interpretiert usw. den Inhalt des Eingabestroms.

Um FileReader zu testen, benötigen Sie eine sehr kleine Anzahl von Dateien (leer, binär, reiner Text usw.), und für ConfigFileInterpreter würden Sie einen Stub der Klasse FileReader verwenden, der einen Eingabestrom zum Lesen zurückgibt. Jetzt können Sie alle Ihre verschiedenen Konfigurations-Situationen als Strings vorbereiten und müssen nicht so viele Dateien lesen.

0voto

Sie werden kein schlechteres Unit-Testing-Framework als CppUnit finden. Im Ernst, jeder, der CppUnit empfiehlt, hat nicht wirklich einen Blick auf eines der konkurrierenden Frameworks geworfen.

Also ja, gehen Sie für ein Unit-Testing-Franework, aber verwenden Sie nicht CppUnit.

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