6

Wie gehen Sie mit dem Testen der Integration Ihrer Datenbank durch Ihre Domänenschicht/-modell (Repositories), die LINQ 2 SQL in der Implementierung verwendet und verlassen die DB wie Sie es gefunden? Mit anderen Worten, die ideale Welt der Einheitsprüfung der DB, würde der Integrationstest die DB verlassen, wie sie es gefunden hat.Wie Ausführen von Integrationstests auf DB über Repositorys mit LINQ2SQL?

Gibt es Tools da draußen, die das automatisch behandeln? Was sind die Best Practices für die Durchführung von Integrationstests in einer Datenbank über Repositorys?

+0

Technisch wäre dies Integrationstests sein;) – womp

+0

@womp: eingestellt ... – RSolberg

+0

Ich habe kürzlich darüber nachgedacht. Ich benutze LINQ2SQL, aber ich hätte gerne eine "Referenz" -Datenbank in XML. Zum Testen würde ich einfach die automatisch generierten SQL-Daten mit automatisch generiertem XML-Material, das auf meine Datei verweist, abschalten. Die Tests können die XML-Datei einfach "zurücksetzen" (kopieren/testen/verschieben). Und ich konnte die Testdaten feinabstimmen, die einfach zu Versionskontrolle wären. Ich bin mir nicht sicher, wie ich LINQ dazu bringen sollte, ein passendes XML-Framework zu erstellen. Ich bin noch nicht dazu gekommen, nach Machbarkeit oder Intelligenz zu fragen. –

Antwort

1

Das Frühlings-Rahmenwerk provides support for integration testing when using NUnit. Die NUnit-Klassen befinden sich in der Assembly Spring.Testing.NUnit.dll. Da sind einige classes that perform transaction management. Diese Klassen Erstellen und Rollback einer Datenbanktransaktion für jeden Test. Sie schreiben einfach Code, der die Existenz einer Transaktion annehmen kann.

Ob dies mit Linq zu SQL tatsächlich funktioniert, ist eine andere Sache. Spring sagt, das funktioniert mit ORMs. Mit SQL Server 2008 können Sie Transaktionen verschachteln. Sie könnten also theoretisch eine Transaktion starten, Ihren Test über die Linq to SQL-Klassen durchführen und dann Ihre Transaktion zurückrollen. Aber ich habe es nicht
versucht es.

Ryan Garaguay hat an interesting article darüber, welche TransactionScope und NUnit verwendet die Datenbankänderungen rückgängig zu machen (obwohl er SQLCommand und SQLConnection- Objekte in seinem Testcode verwendet, anstatt Linq)

Verwandte Themen