Was ist der Unterschied zwischen Fälschen, Verspotten und Stubben?

Ich weiß, wie ich diese Begriffe verwende, aber ich frage mich, ob es akzeptierte Definitionen für @ gibFälschun, Verspottun, und stubbing für Unit-Tests? Wie definieren Sie diese für Ihre Tests? Beschreiben Sie die Situationen, in denen Sie sie möglicherweise verwenden.

Hier ist, wie ich sie benutze:

Fälschun: Eine Klasse, die eine Schnittstelle implementiert, jedoch feste Daten und keine Logik enthält. Gibt einfach "gute" oder "schlechte" Daten zurück, je nach Implementierung.

Spotte: Eine Klasse, die eine Schnittstelle implementiert und die Möglichkeit bietet, die Rückgabewerte / Ausnahmen für bestimmte Methoden dynamisch festzulegen und zu prüfen, ob bestimmte Methoden aufgerufen / nicht aufgerufen wurden.

Stub: Wie eine Mock-Klasse, mit der Ausnahme, dass nicht überprüft werden kann, ob Methoden aufgerufen / nicht aufgerufen wurden.

Mocks und Stubs können von Hand oder durch ein Mocking-Framework generiert werden. Gefälschte Klassen werden von Hand generiert. Ich benutze Mocks hauptsächlich, um Interaktionen zwischen meiner Klasse und abhängigen Klassen zu überprüfen. Ich verwende Stubs, sobald ich die Interaktionen überprüft habe und alternative Pfade durch meinen Code teste. Ich verwende gefälschte Klassen hauptsächlich, um Datenabhängigkeiten zu abstrahieren oder wenn Mocks / Stubs zu mühsam sind, um sie jedes Mal einzurichten.

Antworten auf die Frage(20)

Ihre Antwort auf die Frage