2 Stimmen

Datenbankfreie NUnit-Tests

Wie kann ich meinen Code (TDD) für Standard-CRUD-Operationen testen, ohne eine Datenbank zu haben? Ist es möglich, ein solches Maß an Isolierung zu erreichen, so dass mein Code datenbankunabhängig ist.

Vielen Dank, Leute.

4voto

CaffGeek Punkte 21343

Yep. Sie schreiben eine Schnittstelle mit allen Aufrufen der Datenbank, die Sie wünschen.

Dann erstellen Sie zwei Klassen, die die Schnittstelle implementieren.

Einer hat echten Zugang zu Ihrer Datenbank.

Bei der anderen wird nur so getan, als ob es sich um eine Scheinimplementierung handelt.

2voto

AutomatedTester Punkte 21864

Verwenden Sie Fakes, wie Rhino Mocks, um den Datenzugriff zu simulieren. Wenn Ihre Tests laufen, interagieren sie mit der Fälschung, anstatt den ganzen Weg bis zur Datenbank zu gehen.

1voto

Dror Helper Punkte 29647

Sie können die Geschäftsschicht (und einige Teile der Präsentationsschicht) mit Mock-Objekten testen.

Verwenden Sie Mocks/Fakes, so dass anstelle des Aufrufs der Datenbank von der DAL eine gefälschte Klasse aufgerufen wird, die einen vordefinierten Wert zurückgibt.

Um die DAL zu testen, benötigen Sie eine aktuelle Datenbank . Sie können ein Unit-Testing-Framework verwenden, um einfache CRUD-Tests in der Datenbank durchzuführen. Erstellen Sie eine einfache Testdatenbank sowie einen Wiederherstellungspunkt und verwenden Sie das Setup & Teardown des Unit-Testing-Frameworks, um sicherzustellen, dass sich Ihre Datenbank im erwarteten Zustand befindet.

1voto

Martin R-L Punkte 3989

Q1:

Wie kann ich meinen Code testen (TDD) für Standard-CRUD-Operationen ohne ohne eine Datenbank zu haben.

Ich sehe, dass der Beitrag mit nunit getaggt ist, also gehe ich von einem .net-Kontext aus. Angesichts dessen habe ich persönlich SQLite als In-Memory-Datenbank erfolgreich in einem Projekt für ein paar Monate Zeit jetzt (zusammen mit NHibernate und gemeinsame DDD-Muster) verwendet.

Q2:

Ist es möglich, ein solches Niveau zu erreichen Isolierung zu erreichen, so dass mein Code Datenbank unabhängig ist.

Ich glaube nicht, dass es möglich ist, vollständig datenbankunabhängigen Code zu schreiben, aber NHibernate bringt mich zu 95 % dorthin (aber diese Zahl hängt stark von Ihrem spezifischen Kontext ab).

Darüber hinaus kann mit guten Datenzugriffsmustern, z. B. "Repository" und "Unit of Work", der Rest der Codebasis zu 100 % datenbankunabhängig gemacht werden. Das Gleiche gilt für andere Datenquellen, z. B. CSV- und XML-Dateien.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X