Angenommen, Sie müssen eine unnötig komplizierte, schwer nachzuahmende (vielleicht hat sie konkrete Klassen ohne virtuelle Schnittstelle) und unzuverlässige Bibliothek eines Drittanbieters verwenden, die mit einer externen Ressource wie einem Socket oder einer Datenbank verbunden ist. Sie beschließen, "Wrapper"-Schnittstellen/Klassen zu erstellen, um die Verwendung dieser Bibliothek erheblich zu vereinfachen und es den Entwicklern, die den Wrapper verwenden, zu ermöglichen, weiterhin testbaren Code zu schreiben. Die Schnittstelle des Wrappers sieht nicht wie die Originalschnittstelle aus.
Ich habe ein paar Fragen dazu, wie ich diesen Wrapper testen kann.
-
Sollte der Wrapper ohne die externe Ressource getestet werden, indem eine Methode-für-Methode-Schicht über der schlechten Bibliothek entwickelt wird, die nachgeahmt werden kann?
-
Wenn Sie Ihre Wrapper-Klassen mit der Bibliothek eines Drittanbieters (unter Verwendung der externen Ressourcen) testen, handelt es sich dann um einen Unit-Test oder einen Integrationstest? Wenn die externe Ressource während des automatisierten Tests in den Speicher eingebettet werden kann, handelt es sich dann immer noch um einen Integrationstest?
-
Wann hören wir auf zu spotten und zu schimpfen und sagen, dass wir eine Einheit haben. Laut Wikipedia ist eine Unit der kleinste testbare Teil einer Anwendung", aber ich finde es schwierig, dies zu messen. Wenn Geschwindigkeit ein Faktor bei der Entscheidung ist, ob wir eine Unit testen oder nicht, wie entscheiden Sie, wie langsam ist zu langsam für den Test, um als Unit-Test bezeichnet zu werden?