Frage

Ich habe versucht, meine mentallity zu schieben, wenn zu Hause der Entwicklung mehr in Richtung TDD und ein bisschen DDD ausgerichtet werden.

Eine Sache, die ich nicht verstehe ist aber, warum Sie eine gefälschte Repository gegen testen schaffen würden? Ich habe nicht wirklich in sie sah viel, aber sicher die Idee des Tests ist der Code zu helfen zu entkoppeln (Sie mehr Flexability geben), trimmen Code erforderlich und bringen die Anzahl der Fehler.

So kann jemand füllen in meinem dummen Gehirn, warum einige, wie gefälschte Repositories testen? Ich hätte gedacht Tests haben gegen eine echte Datenbank eine viel bessere Alternative zur Schaffung eines gefälschten ist, denn dann wissen Sie, dass es gegen Ihre realen Welt Datenspeicher funktioniert.

War es hilfreich?

Lösung

Das gefälschte Repository ermöglicht es Ihnen, nur den Anwendungscode zu testen.

Die gefälschte Repository bedeutet ein automatisierter Test leicht einen bekannten Zustand im Repository einrichten.

Das gefälschte Repository wird um mehrere Größenordnungen schneller als eine echte Datenbank.

Das gefälschte Repository ist kein Ersatz für Systemtests, die Ihre Datenbank enthalten werden.

Andere Tipps

Wie ich es sehe gibt es zwei wirklich große Gründe, warum Sie gegen gefälschte Ressourcen testen:

  • Es macht Unit-Tests schneller , wenn Sie langsam I / O oder Datenbank ein verspottet haben gegen. Dies kann nicht wie alles aussehen, wenn Sie eine kleine Test-Suite haben, aber wenn man bis zu +500 Unit-Tests ist startet es einen Unterschied zu machen. In einer solchen Menge, Tests, die für die Datenbank ausgeführt wird starten mehrere Sekunden dauern zu tun. Programmierer sind faul und wollen die Dinge schnell gehen, damit, wenn eine Testsuite mehr als 10 Sekunden dauert, dann werden Sie nicht glücklich sein TDD mehr zu tun.
  • Sie erzwingt Sie Ihr Code-Design zu denken, um Änderungen zu erleichtern. Design by Contract und Dependency Injection wird auch so viel einfacher zu tun, wenn Sie Implementierung gegen Schnittstellen oder abstrakte Klassen gemacht haben. Wenn es richtig gemacht solches Design erleichtert es zu Änderungen im Code entsprechen.

Der einzige Nachteil ist die offensichtlichste:

  • Wie können Sie sicher sein, es funktioniert wirklich?

... und das ist das, was Integrationstests ist.

I upvoted Giraffe Antwort, aber nur ein paar Punkte hinzufügen möchten:

  • Jeder Entwickler kann ein Mock / Fälschung verwenden Repository für seine / ihre eigene Einheit Tests, ohne die störenden Tests werden von anderen Entwicklern getan am selben Projekt.

  • Mit einem lokalen Mock / gefälschte Repository verstärkt den Benutzer eines Daten Abstraktionsschicht, die gut ist, Design der Praxis.

Als Beispiel habe ich etwas so einfach wie ein HashMap verwendet ein Modell der Datenzugriffsschicht zu implementieren. Dies macht es extrem leicht für jedes Gerät zu testen, um sicherzustellen, dass genau die notwendigen Voraussetzungen für ihren Zweck existieren, und um sicherzustellen, dass die richtigen Anrufe auf der Datenzugriffsschicht hergestellt wurden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top