| 

.NET C# Java Javascript Exception

1
Hallo,

hat jemand ein gutes Tutorial im Netz für Unit Tests mit VS 2010 gefunden? Leider habe ich auch nur die Professional variante, so dass einige Optionen wohl auch nicht zur Verfügung stehen.

Ein paar ganz einfache Tests habe ich schon implementiert. Konkret interessiert mich im Moment, wie ich die Dauer einer Klasse, die DB Abfragen durchführt testen kann. Also: Bei Dauer über 0.5 Sekunden soll der Test fehlschlagen, auch wenn das zurückgegebene Ergebnis stimmt.

Gruß
13.09.2011
LutzJ 1,3k 1 8
3 Antworten
3
Hallo,

wie ich die Dauer einer Klasse, die DB Abfragen durchführt testen kann.

das ist dann kein Unit-Test, sondern ein Integrationstest.
Für den Unit-Test müsste der DB-Zugriff gemockt werden. (Daher bietet sich auf die Vewendung von Repository und Unit of Work an.)

Bei MsTest (so heißt das für VS korrekt) kenn ich mich nicht sehr gut aus, aber bei NUnit. Und da kann das was du testen willst einfach per NUnit - Timeout erledigt werden. Auch sonst hat NUnit ein paar mächtigere Attribute als es MsTest hat.

PS: Das soll nicht Werbung für NUnit sein, und auch keine Diskussion MsTest vs. NUnit heraufbeschwören, aber ich finde es halt besser :-)

mfG Gü
13.09.2011
gfoidl 9,4k 3 5
gfoidl 9,4k 3 5
Wie sieht das eigentlich Lizenztechnisch aus für professionelle Entwicklung? Und wie gut integriert sich NUnit in die IDE?
LutzJ 13.09.2011
NUnit kann kommerziell verwendet werden.
In VS z.B. per VisualNUnit (gibts als Extension, geht aber nicht für die VS-Express) od. als Custom-Tool starten, etc. Es kann auch der MsTest-Runner verwendet werden, aber mit den NUnit-Attributen.
gfoidl 13.09.2011
3
Bei Dauer über 0.5 Sekunden soll der Test fehlschlagen, auch wenn das zurückgegebene Ergebnis stimmt.

Für den Fall kannst du einfach das TimeoutAttribute verwenden.
[Timeout(500)]

http://msdn.microsoft.com/de-de/library/microsoft.visualstudio.testtools.unittesting.timeoutattribute.aspx
14.09.2011
PinBack 687 1 8
0
MS Test ist ein Framework für automatisierte Tests. NUnit hingegen ist ein Unit-Test Framework. Der Unterschied ist, dass mit MS Test vorranging System- und Integrationstests bewerkstelligt werden (sollten) und dazu gehört der Zugriff auf Datenbanken.

Bei Unit Tests geht es eher darum Klassen und die Interaktion zwischen einzelnen von ihnen zu prüfen. Deshalb sollten diese Tests unabhängig von Datenbanken, Dateien usw. sein. Ein Grund warum NUnit für Datenbanken und Dateiarbeit meiner Erfahrung nach keine oder kaum Methoden anbietet.

Die Krux ist aber, dass beide Arten von Testvorgehen gern gleichgesetzt und als Unit Test bezeichnet werden. Aber egal, du hattest eine Frage und die habe ich noch nicht beantwortet.

Zur Frage: Eine Art Timeout für einen Datenbankzugriff zu prüfen ist etwas schwer. Weil es auch stark davon abhängt wo dieser Test läuft, welche Umgebungsprozess noch laufen usw. Es kann also sein, dass der Test bei unterschiedlichen Ausführungen unterschiedlich ausgeht, vorallem wenn andere Tests parallel ausgeführt werden, was durchaus passieren kann.

Die Wahl sollte in deinem Fall meiner Meinung nach eher bei MS Test liegen. Einen Einstieg in das Testen von Datenbanken sollte dir diese Video geben: http://msdn.microsoft.com/en-us/vstudio/Video/ee942238
13.09.2011
Hendrik Lösch 1,5k 1 9
Ein Database-Unittest in VS ist aber nicht das was der OT will. mit diesen können SProcs, Trigger, etc. in der Datenbank getestet werden, aber nicht der Zugriff von User-Code.
gfoidl 13.09.2011
Leider habe ich wie gesagt nur die professionell Variante. Damit sind mit ms Test keine db Test möglich. Was mir noch fehlt ist eine gute Ableitung für nunit inklusive des Plugins für Vs.
LutzJ 13.09.2011
Ich denke eine Anleitung für NUnit ist nicht nötig wenn du programmieren kannst. Es sind ja nur Klassen/Methoden mit Attributen und diese werden bei der NUnit-Doku auch erklärt. Ich denke du suchst eher ein Tut. fürs Unit-Testen allgemein. Oder täusche ich mich?
gfoidl 13.09.2011
So kann man natürlich auch anfangen. Ich lerne nur lieber/besser mit dem konkreten Anwendungsfall. Also gleich mit dem Tool, mit dem ich später arbeiten möchte/muss
LutzJ 14.09.2011

Stelle deine Vs2010-Frage jetzt!