Ich bin ein bisschen verwirrt, was ist besser, Debug-oder Unit-Test schreiben zu verwenden? und ist das allgemein oder gibt es Fälle, in denen Debug besser als Unit-Test ist oder sollte ich beide verwenden?
Danke
Das Debuggen hilft Ihnen, nicht funktionierenden Code zu diagnostizieren.
Komponententests bieten Folgendes:
Ihre Komponententests sollten wiederholt ausgeführt werden (meistens als Teil Ihres Build-Prozesses). Wenn Sie sie brechen (meistens aufgrund eines Programmierfehlers), dann ist es an der Zeit, den Debugger auszubrechen, um die Probleme zu identifizieren und den Code entsprechend zu korrigieren (oder den Test zu ändern).
Komponententest wird verwendet, um sicherzustellen, dass der Code wie erwartet funktioniert. Debuggen wird verwendet, wenn Sie herausfinden müssen, warum der Code nicht wie erwartet funktioniert.
Wenn Sie den Fehler im Komponententest reproduzieren können, verwenden Sie einen Komponententest. Es wird dauern, nachdem der Fehler behoben ist und den Code in Zukunft davor "schützen".
Wenn Sie Schwierigkeiten haben, den fehlerhaften Code zu finden, ist das Debuggen wahrscheinlich eine bessere Lösung. Aber sobald Sie wissen, wo das Problem liegt - schreiben Sie einen Test, stellen Sie sicher, dass es fehlschlägt und beheben Sie den Fehler.
Das Debugging benötigt mehr Zeit und es ist eine "einmalige" Lösung. Wenn Sie die Möglichkeit zum Komponententest haben, bevorzugen einen Komponententest .
Debugging und Schreiben von Unit-Tests sind zwei verschiedene Dinge. Theoretisch sollte Ihre Entwicklung durch Unit Tests erfolgen, die die verschiedenen Szenarien abdecken. Sie könnten debuggen, wenn Sie feststellen, dass etwas mit Ihrem Code nicht stimmt und versuchen, die Werte verschiedener Variablen in Runtime usw. zu sehen ... Im Grunde genommen könnten Sie nur debuggen, wenn etwas nicht stimmt.
Eine andere Perspektive:
Machen Sie immer Unit-Tests von allem, was Sie tun können. Das Ideal ist, jede Komponente isoliert zu testen und Integrationstests von Komponenten durchzuführen.
Worüber Sie jedoch sprechen, ist eine andere Frage: Wenn etwas kaputt geht, was sollten Sie tun, gehen Sie, versuchen Sie einen Komponententest oder führen Sie den Debugger aus. Dies sind nicht wirklich die Möglichkeiten. Wenn etwas kaputt geht und Sie das Verhalten in einem Komponententest sehen können, ist das ideal. Aber Sie müssen immer noch den Grund für das Verhalten finden. Jetzt haben Sie die Wahl zwischen dem Hinzufügen von Protokollierung und dem Ausführen des Debuggers, und ich stimme mit den Leuten, die die Protokollierung verwenden, bis Sie nicht können. Die Debuggerzeit fügt dem Code keinen langfristigen Wert hinzu. Die Protokollierung funktioniert.
Ich denke, dass diese Frage tiefer betrachtet werden kann, als einige der Antworten nahe legen ... obwohl sie vielleicht besser für den Austausch von Programmierstapeln passen.
Zuerst einige Kommentare darüber, wie Debugging und Komponententests interagieren
Wenn etwas schwer genug zu debuggen ist, sollte man aufhören, das Problem zu beheben und Unit-Tests mit verwandten Typen problematischer Eingaben starten. Vielleicht möchten Sie versuchen, die Eingabe zu vereinfachen, die zuerst Probleme verursacht (vorausgesetzt, Ihr System ist deterministisch!)
Ähnlich wie oben beschrieben, können Sie Ihren problematischen Code durch das System verfolgen und damit beginnen, die Dinge in der Anrufkette mit identischen Eingaben zu testen
Komponententests können als "Debuggen vor der Zeit" oder "pessimistisches Debugging" betrachtet werden, vorausgesetzt, Sie haben einen Fehler, also versuchen Sie, ihn sofort zu debuggen. Wenn Sie dies tun, wenn Sie ein tatsächliches Problem haben, ist es eher so, als würde man raten, dass es in einem bestimmten Codeabschnitt einen Fehler gibt, den Sie durch Erraten gebrochener Eingaben herausfinden können.
Tags und Links unit-testing debugging