it-swarm.com.de

Verwendet Integrationstests Mocks?

Ich bin derzeit in einer Klasse für Softwaretests, in der wir für unser Semesterprojekt mehrere Arten von Tests durchführen müssen, z. B. Unit-Tests und Integrationstests. Für Integrationstests soll der Professor für unsere Integrationstests Mocks und Spottbibliotheken (wie EasyMock und Mockito) verwenden. Ich werde allerdings ziemlich verwirrt. Beim Integrationstest werden Tests außerhalb von Klassen, Modulen, Diensten usw. durchgeführt. Warum sollten Mocks und Stubs für Integrationstests geeignet sein, wenn Sie mehrere Klassen und Dienste testen?

25
TheLegendOfCode

Wenn Sie über eine Funktionalität verfügen, die mehrere externe Komponenten berührt, verspotten Sie möglicherweise alle bis auf eine, um eine bestimmte Komponente zu isolieren und zu testen. Angenommen, Sie haben eine Funktion, die einen Webdienst aufruft und dann basierend auf den Ergebnissen etwas mit einer Datenbank ausführt. Sie könnten drei Integrationstests schreiben:

  1. ein Test, der den Webservice-Aufruf verspottet, aber eine echte Datenbankkonnektivität beinhaltet.
  2. ein Test, der einen echten Webservice-Aufruf ausführt, aber eine falsche Datenbankkonnektivität verwendet.
  3. ein Test, der einen echten Webservice-Aufruf ausführt und eine echte Datenbankverbindung beinhaltet.

Wenn Sie alle drei Tests ausführen und 1 und 3 fehlschlagen, besteht eine gute Chance, dass Ihr Code einen Fehler enthält, der mit der Datenbank funktioniert, da der einzige Test, der bestanden wurde, der Test war, bei dem die Scheindatenbankkonnektivität verwendet wurde.

Im Allgemeinen verwenden Integrationstests keine Mocks, aber ich habe gelegentlich so etwas gemacht.

Es ist nicht sofort klar, was mit Integrationstest gemeint ist, aber die Verwendung von Fälschungen/Verspottungen/Testdoppel ist eine gültige Technik, um Testszenarien auf allen Ebenen innerhalb der - zu erstellen. Pyramide der Tests . [1] [2] [3]

7
jschnasse