Eines der größten Probleme, die mich derzeit davon abhalten, Volldampf in Komponententests zu tauchen, ist, dass ein wirklich großer Prozentsatz des von mir geschriebenen Codes stark von COM-Objekten von Drittanbietern aus verschiedenen Quellen abhängt, die auch miteinander interagieren (Ich schreibe Add-Ins für Microsoft Office mit mehreren Hilfs-Bibliotheken, wenn Sie wissen müssen).Wie testen Sie Unit-Code, der mit COM-Objekten von Drittanbietern interagiert und instanziiert?
Ich weiß, ich sollte wahrscheinlich Mock-Objekte verwenden, aber wie genau würde ich in diesem Fall darüber gehen? Ich kann sehen, dass es relativ einfach ist, wenn ich nur einen Verweis auf ein bereits vorhandenes Objekt weitergeben muss, aber einige meiner Routinen instanziieren externe COM-Objekte selbst und geben sie dann manchmal an ein anderes externes COM-Objekt aus einer anderen Bibliothek weiter.
Was ist der Best-Practice-Ansatz hier? Soll ich den Testcode vorübergehend ändern, um die COM-Registrierungsinformationen in der Registrierung zu ändern, damit der getestete Code stattdessen eines meiner Mock-Objekte instanziiert? Sollte ich modifizierte Typ-Bibliothekseinheiten injizieren? Welche anderen Ansätze gibt es?
Ich wäre besonders dankbar für Beispiele oder Tools für Delphi, wäre aber genauso glücklich mit allgemeineren Hinweisen und Erklärungen auf höherer Ebene.
Danke,
Oliver
Einverstanden; Da alle Interaktionen mit COM-Objekten (außer Automatisierungsaufrufen über IDispatch) eine COM-Schnittstelle verwenden, sollten Sie diese nur in Ihrer Scheinklasse implementieren können. – rpetrich