Ich habe Besucher als eine der Kernarchitektur Ideen in einer meiner Apps eingeführt. Ich habe mehrere Besucher, die auf dem gleichen Stand sind. Nun, wie soll ich es testen? Einige Tests, an die ich denke, sind ein bisschen größer als ein Komponententest (Integrationstest? Was auch immer), aber ich möchte es trotzdem tun. Wie würdest du Code wie die C++ - Probe aus Wiki-Kunst auf Visitor PatternUnit Testing Besuchermuster Architektur
Antwort
einen Test Besucherobjekt machen und es Dinge besuchen machen .... testen, dass es die richtigen Dinge besucht.
Sie können mock objects erstellen und von Ihren Besuchern besucht werden. Erstellen Sie dann Mock-Besucher und testen Sie, ob die richtigen Aktionen ausgeführt wurden.
Das ist in der Tat eine sehr gute Idee !!! –
Komponententests befassen sich nicht mit dem Testen von Mustern, sondern mit dem Testen der korrekten Implementierung von Methoden und Funktionen. Das Besuchermuster ist eine spezifische Klassenstruktur, und für jede der beteiligten Klassen (ConcreteVisitor und ConcreteElement) werden Unit-Tests benötigt.
Wenn Sie die Gewissheit haben, dass sich Ihre Klassenmethoden in Ordnung verhalten, können Sie mit dem Unit-Test-Framework auch Integrationstests entwickeln. Beginnen Sie nicht sofort mit dem Integrationstest: Sie werden feststellen, dass Sie eine Vielzahl von Integrationstests entwickeln, die das Verhalten einer bestimmten Klasse testen, z. B. Komponententests.
Ob Sie Mock-Objekte benötigen oder "echte" Objekte verwenden können, ist eine andere Sache. Dies hängt sehr davon ab, ob sich die Objekte für Unit-Test-Zwecke gut genug verhalten (dh sie ziehen nicht viele zusätzliche Abhängigkeiten etc.) und ob die Objekte selbst Unit-getestet sind (dh Sie müssen diesen Objekten vertrauen können) 100%). Das Problem "Schein/vs. reale Objekte" wurde bereits im Stackflow angesprochen. Suchen Sie daher die unittest-Tags.
Können Sie ein einfaches Beispiel geben, wie ich Jsqlparser verwende, die Besuchermuster verwendet und wissen wollte, wie man sie testet. – Tony
möchten Sie wahrscheinlich Ihre eigene Frage stellen. zeigen Sie einige grundlegende Code und was Sie Probleme mit dem Testen haben. Ich mache kein C++ mehr, aber jemand anderes wird Ihnen Code geben, der zeigt, wie. –
Hier ist die [link] (http://stackoverflow.com/questions/41887920/how-to-do-unit-testing-of-visitors-in-jsqlparser) zu meiner Frage. – Tony