Vor ein paar Tagen begann ich in einem Unit-Test-Framework namens check, zu untersuchen, und ich beabsichtige, den Test auf c-Code unter Linux auszuführen.Ist es zu viel Aufwand, den Komponententest mit Valgrind auszuführen?
Jetzt überprüfen und einige gut gestaltete Code und einige Testcode kann mir helfen , um zu überprüfen, dass die grundlegende Funktionalität korrekt ist, Ich meine, es ist ganz einfach schauen nur auf die Variablen in und Antwort zurück und dann entscheiden, ob Eine Funktion ist korrekt oder nicht.
Aber sagen wir, ich möchte eine dynamische Speicherstruktur mit viel aus malloc und frei, testen und es stellt sich heraus, dass ich Daten eingeben und die richtigen Daten wieder heraus bekommen kann. Aber das beweist nicht, dass ich nicht einige Speicher in diesem Prozess, gebrochen habe, sagen wir, ich habe vergessen, die Hälfte aus dem Speicher zu befreien und verlor die Zeiger (ein klassisches Memleak). Dieser Code würde wahrscheinlich den Großteil der Komponententests bestehen.
So jetzt für die Frage: ist es eine gute Idee, die gesamte Einheit Testcode mit d. H. Valgrind und lassen Sie ihn irgendwelche Malloc/freie Probleme zu erkennen? (Oder vielleicht in etwas wie Electric Fence kompilieren?)
Es fühlt sich an wie eine gute Idee, aber ich bin mir nicht sicher, was ich selbst bin immer in hier .....
Dank Johan
Update: Dank Douglas und Jonathan, es so scheint, ist eine gute Idee und etwas, das ich mit :-)
-Update fortgesetzt werden sollte: Valgrind ist ein lustiges Werkzeug, aber die ersten Memleaks, die ich dabei fand, waren im Testframework und nicht mein eigener Code (ziemlich lustig). Also ein Tipp zum Rest draußen ist zu überprüfen, dass das Unit-Test-Framework, das Sie verwenden, nicht undicht ist, bevor Sie Ihren eigenen Code auf den Kopf stellen. Ein leerer Testfall war alles was in meinem Fall benötigt wurde, da seitdem nichts anderes als das Unit Test Framework läuft.
Es gibt auch '--xml = yes' und' --xml-file = ', die das automatische Lesen der Ergebnisse erleichtern. –