Beziehen Sie sich auf die Codeabdeckung von Komponententests oder veraltetem Code? Generell denke ich, dass nur testbarer Code, der einen Fehler aufweist, mit einem Unit Test abgedeckt werden sollte (ja, ich weiß, dass vielleicht ein heiliger Krieg beginnt, aber das ist, wo ich stehe). Das wäre also ein ziemlich geringer Prozentsatz.
Jetzt ist veralteter Code auf der anderen Seite eine andere Geschichte. Veralteter Code ist Code, der nicht verwendet wird. Du brauchst wahrscheinlich kein Tool, um dir das für eine Menge deines Codes mitzuteilen, schau einfach nach den kleinen blauen Punkten, nachdem du in Delphi kompiliert hast. Alles ohne einen blauen Punkt ist abgestanden. Wenn Code nicht verwendet wird, sollte er normalerweise entfernt werden. Das wäre also 100% Codeabdeckung.
Es gibt andere Szenarien für veralteten Code, z. B. wenn Sie speziellen Code verarbeiten müssen, wenn das Datum jemals am 31. Februar landet. Der Compiler weiß nicht, dass das nicht passieren kann, also kompiliert er ihn und gibt ihm einen blauen Punkt. Jetzt können Sie einen Komponententest dafür schreiben und testen und es könnte funktionieren, aber dann haben Sie Ihre Zeit ein zweites Mal verschwendet (zuerst für das Schreiben des Codes, dann für das Testen).
Es gibt Tools zu verfolgen, welche Code Pfade verwendet werden, wenn das Programm läuft, aber das ist nur simi-zuverlässig, da nicht alle Code Pfade jedes Mal verwendet werden. Wie dieser spezielle Code muss man Schaltjahr behandeln, es wird nur alle vier Jahre laufen. Wenn Sie es also herausnehmen, wird Ihr Programm alle vier Jahre unterbrochen.
Ich glaube, ich habe deine Frage zu DUnit und Code Coverage nicht wirklich beantwortet, aber ich denke, dass ich dir vielleicht weitere Fragen hinterlassen habe, als du angefangen hast. Nach welcher Art von Codeabdeckung suchen Sie?
UPDATE: Wenn Sie einen TDD-Ansatz verwenden, wird kein Code geschrieben, bis Sie einen Test dafür schreiben, also haben Sie von Natur aus eine 100-Testabdeckung. Natürlich, nur weil jede Methode durch einen Test ausgeübt wird, bedeutet das nicht, dass ihr gesamtes Spektrum an Verhaltensweisen ausgeübt wird. SmartInspect bietet eine wirklich einfache Methode zu messen, welche Methoden zusammen mit dem Timing usw. aufgerufen werden. Es ist ein bisschen weniger als AQTime, aber nicht frei. Mit etwas mehr Arbeit von Ihrem Teil können Sie Instrumentierung hinzufügen, um jeden Codepfad zu messen (Verzweigungen von "if" -Anweisungen, etc.) Natürlich können Sie Ihren Methoden auch Ihre eigene Protokollierung hinzufügen, um einen Abdeckungsbericht zu erstellen, und das ist kostenlos (Nun, erwarte für deine Zeit, das ist wahrscheinlich mehr wert als die Werkzeuge). Wenn Sie JEDI Debug verwenden, können Sie auch einen Call-Stack erhalten.
TDD kann nicht einfach rückwirkend auf vorhandenen Code ohne viel Refactoring angewendet werden. Obwohl die neueren Delphi-IDEs die Möglichkeit haben, Unit-Test-Stubs für jede öffentliche Methode zu generieren, erhalten Sie eine 100% ige Abdeckung Ihrer öffentlichen Methoden. Was Sie in diese Stubs schreiben, bestimmt, wie effektiv diese Abdeckung ist.
Ich habe noch keine der Antworten akzeptiert, weil ich Menschen ermutigen will, ihre Meinung über Unit-Tests zu schreiben, welche Tools sie verwenden und welche Abdeckung sie versuchen es zu erreichen. Also alle, fühlen Sie sich frei zu kommentieren;) – jpfollenius