Wenn Sie Komposition verwenden, können Sie die anderen Objekte , von denen Ihre geprüfte Klasse abhängt, spotten, aber wenn Sie Vererbung verwenden, können Sie die Basisklasse nicht mocksen. (? Oder können Sie)Wie erteile ich Unit-Test erben Objekte?
Ich versuche im Allgemeinen prefer composition over inheritance, aber manchmal Vererbung scheint wirklich wie das beste Werkzeug für den Job - na ja, zumindest bis es zu Komponententests kommt.
Also, wie testen Sie die Vererbung? Oder trashst du es einfach als untestable und verwendest stattdessen die Komposition?
Hinweis: Ich benutze meistens PHP und PHPUnit, so Hilfe auf dieser Seite wird am meisten geschätzt. Aber es wäre auch interessant zu wissen, , wenn es Lösungen für dieses Problem in anderen Sprachen gibt.
Es gibt ein [nettes Beispiel] (http://stackoverflow.com/questions/58969/best-way-to-unit-test-a-website-with-multiple-user-types-with-phpunit#63442) für [die Lösung von munificent gegeben] (http://stackoverflow.com/questions/100795/how-doi-iunit-test-inheriting-objects#116340). Lassen Sie die Testhierarchie Ihrer Klassenhierarchie ähneln. – GrGr
Ich sehe nicht, wie es möglich wäre, eine Superklasse zu verspotten. Das müsste ein Sprachfeature sein. Was genau versuchst du zu testen? Für mich klingt das nach Reflektion könnte dir helfen? – Robse
Ich weiß auch nicht, wie eine Elternklasse zu verspotten wäre. Deshalb frage ich. Aber ich denke nicht, dass es unmöglich ist - sehr wenige Dinge in Computern sind. –