Unit-Tests zu einem bestehenden Projekt hinzufügen

9

Meine Frage ist sehr relevant für , was vorher gefragt wurde , aber ich brauche einen praktischen Rat.

Ich habe "Mit altem Code effektiv arbeiten" in meinen Händen und ich nutze Ratschläge aus dem Buch, wie ich es in dem Projekt gelesen habe, an dem ich arbeite. Das Projekt ist eine C ++ - Anwendung, die aus wenigen Bibliotheken besteht, aber der Hauptteil des Codes wird in eine einzige ausführbare Datei kompiliert. Ich verwende googletest, um Komponententests zum vorhandenen Code hinzuzufügen, wenn ich etwas berühren muss.

Mein Problem ist, wie ich meinen Build-Prozess einrichten kann, damit ich meine Komponententests erstellen kann, da es zwei verschiedene ausführbare Dateien gibt, die Code gemeinsam nutzen müssen, während ich den Code aus meiner "unter Test" -Anwendung nicht in eine Bibliothek extrahieren kann . Im Moment habe ich meinen Build-Prozess für die Anwendung, die den Unit-Tests-Link hält, gegen die Objektdateien erstellt, die beim Build-Prozess der Hauptanwendung generiert wurden, aber ich mag das wirklich nicht. Gibt es irgendwelche Vorschläge?

    
Yorgos Pagles 21.10.2008, 20:39
quelle

5 Antworten

1

Wenn Ihre Test-App nur die zu testenden Objektdateien verknüpft und diese dann bereits als Bibliothek behandelt, sollte es möglich sein, diese Objektdateien in einer separaten Bibliothek für die Haupt- und die Test-App zu gruppieren. Wenn du das nicht kannst, dann sehe ich nicht, dass das, was du machst, eine zu schlechte Alternative ist.

Wenn Sie andere Objektdateien verknüpfen müssen, die nicht im Test sind, dann ist das ein Zeichen von Abhängigkeiten, die gebrochen werden müssen, für die Sie das perfekte Buch haben. Wir haben ähnliche Probleme und verwenden ein System wie das von Vlion vorgeschlagene

    
David Sykes 22.10.2008, 06:49
quelle
2

Effektiv mit Legacy-Code arbeiten ist die beste Ressource für das Testen von altem Code. Es gibt wirklich keine kurzfristigen Lösungen, die nicht dazu führen, dass sich die Dinge verschlechtern.

    
cynicalman 21.10.2008 20:54
quelle
2

Ich skizziere eine Makefile-Struktur, die Sie verwenden können:

%Vor%

Das ist ungefähr das, was ich mache, als einziger Entwickler bei meinem Projekt

    
Paul Nathan 21.10.2008 21:36
quelle
0

Ich würde persönlich weitermachen oder ein Build-Skript erstellen, das die Zielanwendung und die Unit-Tests zur gleichen Zeit durchführt (zwei daraus resultierende Binärdateien von derselben Codebasis). Ja, es riecht fischig, aber es ist sehr praktisch.

Kudos für Sie und viel Glück bei Ihren Tests.

    
smaclell 21.10.2008 20:56
quelle
0

Ich bevorzuge eine Testausführung pro Test. Dies ermöglicht Link-Time-Nähte und hilft auch TDD zu ermöglichen, da Sie an einer Einheit arbeiten können und sich nicht um den Rest Ihres Codes kümmern müssen.

Ich mache die Bibliotheken von allen Tests abhängig. Hoffentlich bedeutet dies, dass Ihre Tests nur ausgeführt werden, wenn sich der Code tatsächlich ändert.

Wenn Sie einen Fehler erhalten, unterbrechen die Tests den Build-Prozess an der richtigen Stelle.

    
Dave Hillier 21.10.2008 21:33
quelle

Tags und Links