Ich schreibe einen Testcode für eine Funktion, die PDF-Dateien verarbeitet. Die Grundidee hinter den Tests ist, dass ich sie auf einige PDFs verweise, die ich speziell ausgewählt habe, sie verarbeite und überprüfe, ob die Ausgabe den Erwartungen entspricht.
Meine Frage ist: Wo soll ich diese großformatigen PDFs speichern? Soll ich sie zusammen mit dem Code in die Versionskontrolle einchecken? Oder woanders hinstellen? Offensichtlich ist der Testcode ohne die PDFs (oder sogar mit anderen PDFs) nutzlos, aber dennoch fühlt es sich falsch an, sie in unser Repository zu stellen.
testing
version-control
data
Swiftheart
quelle
quelle
Tests != Test Data
Antworten:
Ihr Versionskontrollsystem sollte alles enthalten, was zum Erstellen, Kompilieren, Testen und Packen einer Anwendung für die Verteilung (z. B. MSI, RPM) erforderlich ist. Ich würde auch argumentieren, Build-Konfigurationen und andere Skripte sollten auch in der Versionskontrolle sein.
Ich sollte in der Lage sein, ein Projekt auszuchecken und eine vollständige Kompilierungs-, Build- und Testumgebung zu haben.
Es gibt zwei Ansätze zum Einchecken von Testdaten. Zunächst können Sie die Testdaten selbst einchecken (in diesem Fall PDFs). Zweitens können Sie Quelldaten einchecken, die zum Generieren von Testdaten verwendet werden können (falls zutreffend). Dies kann ein SQL-Skript sein, das in eine leere Datenbank mit Testdaten geladen wird, oder eine textbasierte Datei, die in eine PDF- oder eine andere Datei kompiliert werden kann.
Andere sind vielleicht nicht einverstanden, alles in der Versionskontrolle zu überprüfen , aber ich habe in meiner beruflichen Erfahrung festgestellt, dass es entscheidend ist, sicherzustellen, dass eine vollständige Umgebung von Grund auf neu erstellt werden kann.
quelle
Wenn die Tests ohne die von Ihnen vorbereiteten Setup-Dateien unbrauchbar sind, ist es sinnvoll, die Dateien zusammen mit dem Testcode in Ihr VCS aufzunehmen.
Die im Test verwendeten Dateien sind zwar kein Code, Sie können sie jedoch als Abhängigkeit anzeigen, auf die sich der Code stützt. Es ist also sinnvoll, alles zusammenzuhalten.
Als Kontrapunkt behandeln einige VCSs große Binärdateien nicht gut, und andere lehnen es entschieden ab, irgendeine Art von Binärdatei in ein VCS aufzunehmen. Wenn einer dieser Fälle auf Sie zutrifft, ist es auch sinnvoll, die Testdateien an einem bekannten, leicht zugänglichen Ort zu speichern.
Ich würde auch in Betracht ziehen, einen Kommentar in den Testcode zu schreiben, der besagt, dass man sich darauf verlässt,
foo.pdf
um alle Tests auszuführen.quelle
Wenn es sich um statische Daten handelt, dann stellen Sie sie ja in die Versionskontrolle. Diese Dateien werden sich nach dem Einchecken nicht wirklich ändern. Sie werden entweder entfernt, wenn diese Funktionalität nicht mehr benötigt wird, oder es werden neue Testdateien hinzugefügt. In beiden Fällen müssen Sie sich keine Sorgen machen, dass schlechte Binärdifferenzen Platz beanspruchen.
Wenn Sie Testdaten generieren , z. Nach dem Zufallsprinzip sollten Sie es automatisch speichern, wenn ein Test fehlschlägt, aber ansonsten verwerfen. Alle auf diese Weise gespeicherten Daten sollten in regelmäßige Regressionstests umgewandelt werden, damit diese Randfälle definitiv in Zukunft getestet werden, anstatt sich auf das Glück der Auslosung zu verlassen.
quelle
Fügen Sie diese Daten unbedingt Ihren Tests und Ihrem Hauptanwendungscode bei. Es ist hilfreich, eine wirklich gut organisierte Testsuite zu haben. Wenn Sie also die PDF-Extraktion testen (und den Code gut gekapselt haben), sollten Sie in der Lage sein, basierend auf dem Pfad zum App-Code einen Pfad zu Ihren Testdaten zu erstellen - das hat bei mir immer geklappt.
Mit git können Sie einen .gitignore einrichten, um zu verhindern, dass temporäre Ausgaben oder Testprotokolle Ihr Repo verschmutzen.
quelle