Warum soll ich tun, Unittest für meine SQL, DAL und BLL, wenn meine App nur BLL Methoden aufrufen?

StackOverflow https://stackoverflow.com/questions/1142025

Frage

Ich habe einige Tests setzen Visual Studio integrierte Testumgebung verwenden, sie simultate was meine Web-Anwendung durch den Aufruf BLL Methoden tun würde (Sie nur diejenigen, die UI-Ebene sollte wissen, und die Interaktion) ...

Also, wenn ihr Verhalten richtig ist - ich meine Prüfungen bestanden bekommen - warum soll Ich schreibe Tests für untere Schichten wie DAL / Stored Procedures so viele Literatur legt nahe, mich zu tun?

War es hilfreich?

Lösung

End-to-End-Tests sind gut und stellen sicher, dass Ihre Anwendung für bestimmte Szenarien funktioniert.

Misko Hevery legte eine gute Blog-Post auf der Test Kategorisierung rel="nofollow , wo er teilt Unit-Test, Integrationstest und End-to-End-Tests.

Unit-Testing Unit-Tests überprüft, ob die Logik in dieser Funktion Methode ist die richtige Sache zu tun, und dass die Fehlerbehandlung ist es richtig gemacht. Diese Tests sollten idealerweise in Millisekunden nicht Sekunden. Wenn eine Funktion mit etwas zu interagieren muss, wie die DAL, sollten Sie diese Schnittstelle der DAL verspotten, da echte Interaktion eine lange Zeit zu laufen nehmen würde. Diese bieten den besten Return on Investment

Integration Testing Dieses Niveau der Tests überprüft, dass die Interaktion zwischen Business-Logik-Schichten genau tun, was sie tun sollten. Dies ist, wo Ihr Unit-Test mit einer Schnittstelle, wie die DAL in Wechselwirkung treten würde, und prüfen Sie, dass die ‚Verdrahtung‘ korrekt ist. Es sollte ein paar von ihnen sein, aber nicht zu viele, wie das wäre Ihre Aufbauzeit auswirken

End-to-End Testing Diese sind gut, wie sie überprüfen, ob alles zusammen hängt von der Benutzeroberfläche der ganzen Weg hinunter zum DAL. Dieser Test viel mehr von der ‚Verdrahtung‘ und überprüfen, ob Ihre Benutzer, was tun wird Ihre Anwendung nicht töten. Diese können auch Ihr FitNesse und Web-Tests, wie Selen , sind vorbei.

Unit Testing bietet den besten Return on Investment und wird viel teurer Fehler als die anderen Bereiche fangen aber es ist gut, eine gute Mischung der Partie zu haben.

Andere Tipps

Beim Reden von einem NUnit Hintergrund

Testen des SPs / Datenzugriff ist nicht so einfach zu tun. Sie müssen sicherstellen, dass Sie eine „saubere“ Datenbank jedes Mal Ihre Tests ausführen, mit erwarteten Daten dort zu Beginn garantieren Sie heraus die gewünschten Ergebnisse zu erhalten. Daher muss man entweder eine db von einem sauberen Backup jedes Mal wieder herzustellen, oder sicherzustellen, dass Ihre Tests Setup die Datenbank mit den Daten benötigt, bevor die Tests beginnen.

Unit-Tests sollen im Idealfall so schnell wie möglich ausgeführt werden, und ist einer der Gründe, warum die DAL oft, wenn Unit-Tests verspottet - den teueren Prozess der Datenbank-Interaktion zu entfernen. Das, was Sie müssen vorsichtig sein, ist, wenn Sie „Unit-Tests“ zu tun schreiben für SPs / DAL dann die Auswirkungen auf die Testausführungszeit konnte Rakete, die in meiner Erfahrung kann dazu führen, die Menschen nicht die Tests laufen, da sie zu lange dauern. Espeically in einer Continuous Integration Umgebung / Build-Umgebung ist, desto länger dauern die Tests, desto länger Aufgaben ausführen ein Build vorbereitet zu erhalten.

Meine persönliche Meinung ist, dass ich gerne eine Kombination aus spöttisch und tatsächlichem db Zugang in meinen Unit-Tests verwenden, wie ich weiß, dass mein Code ausgeführt wird, wie die ganzen Weg voraussichtlich bis zum und vom db, dumm zu fangen Fehler wie SPs fehlt / Fehler (an der Grenze zwischen der Einheit / Integration / Funktionsprüfung). Aber wo es nicht so wichtig ist, verwende ich Mocks.

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