Frage

Was ist die beste Praxis eine API für die Prüfung, die auf Daten aus der Datenbank abhängt? Was sind die Fragen, die ich in einer „Continuous Integration“ Umwelt aufpassen muß, dass Unit-Tests als Teil des Build-Prozesses läuft? Ich meine, würden Sie Ihre Datenbank als Teil des Build-Skripte bereitstellen (kann Ihr Installateur ausgeführt werden) oder soll ich fest codierte Daten gehe für [Verwendung MSTest Data Unit Tests mit XML-Driven]?

Ich verstehe ich die Datenschicht für Business-Logik-Schicht spotten kann, aber was ist, wenn ich hatte Probleme in meinen SQL-Anweisungen in DAL? Ich brauche die Datenbank zu treffen, nicht wahr?

Nun ... das ist eine Flut von Fragen:) ... Gedanken?

Keine korrekte Lösung

Andere Tipps

Soweit möglich sollten Sie Code ganz auf die Datenbank schlagen zu vermeiden verspotten, aber es scheint mir, dass Sie sich über die Notwendigkeit sind, Ihre SQL irgendwo entlang der Strecke zu testen. Wenn Sie Tests durchführen, schreiben, der die Datenbank getroffen, eine Schlüsselspitze Kopfschmerzen zu vermeiden ist, um sicherzustellen, dass Ihre Einrichtung, die Daten in einem bekannten Zustand bekommt, anstatt sich auf bereits geeignete Daten zur Verfügung stehen.

Und natürlich nie testen gegen Ihre Live-Datenbank! Aber das versteht sich von selbst:)

Wie bereits erwähnt, die Verwendung spöttische DB ruft in Unit-Tests zu simulieren, wenn Sie mit Ihren Tests und Daten zur Geige wollen endlos. SQL-Anweisungen testen impliziert eher einen Integrationstest . Run, die von Unit-Tests zu trennen, sie sind zwei verschiedene Tiere.

Es ist eine gute Idee, um automatisch die Testdatenbank zu löschen und es dann mit Test-Harnisch Daten zu füllen, die die mit der Datenbank verbinden müssen für alle Tests werden dort angenommen wird. Die Datenbank muss für die ordnungsgemäße Isolierung vor jeden Test zurückgesetzt werden - ein Mangel Test, der in schlechten Daten setzt falsche Ausfälle auf Tests dazu führen könnte, die folgen, und es wird chaotisch, wenn Sie Tests in einer bestimmten Reihenfolge für konsistente Ergebnisse haben laufen

Sie können löschen und die Datenbank mit Werkzeugen bestücken ( DBUnit , DBUnit.NET , andere) oder einfach nur Ihre eigenen Utility-Klassen machen das gleiche zu tun.

Wie Sie gesagt haben, sollten andere Schichten ausreichend von Klassen entkoppelt werden, die tatsächlich die Datenbank getroffen, so dass die Notwendigkeit für jede Art von Datenbank in der Prüfung beteiligt ist beschränkt auf Tests eine kleine Teilmenge der Code-Basis laufen. Ihre Datenbank-Komponenten zugreifen können verspottet / Stub für alles, was von ihnen abhängt.

Eines, was ich tat, war, statische Methoden erstellen, die Testdaten von einem bekannten Zustand zurückgeführt. Ich würde dann ein „fake“ DAL verwenden diese Daten zurück, als ob ich tatsächlich wurde die Datenbank aufrufen. Wie für den SQL / Stored Procedure Testen testete ich es SQL Management Studio. YMMV!

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