2008-09-01 6 views
2

Also ich weiß, dass Unit-Tests ein Muss ist. Ich habe die Idee, dass TDD der Weg ist, wenn neue Module hinzugefügt werden. Auch wenn ich es in der Praxis nicht mache. Ein bisschen wie Code kommentieren, wirklich.UI und Event-Test

Die reale Sache ist, ich bin zu kämpfen meinen Kopf herum, wie Unit-Test die Benutzeroberfläche und allgemeinen Objekte, die Ereignisse erzeugen: Benutzersteuerungen, asynchrone Datenbankoperationen usw.

So viel von meinem Code bezieht sich auf UI-Ereignisse, die ich nicht ganz sehen kann, wie man den Komponententest überhaupt startet.

Dort müssen einige Grundierungen und Starter-Dokumente da draußen sein? Einige Tipps und Tricks?

Ich arbeite im Allgemeinen in C# (2.0 und 3.5), aber ich bin mir nicht sicher, dass dies für die Frage unbedingt relevant ist.

Antwort

2

Die Sache zu erinnern ist, dass Unit Testing über das Testen der Einheiten von Code, den Sie schreiben, ist. Ihre Komponententests sollten nicht testen, ob das Klicken auf eine Schaltfläche ein Ereignis auslöst, sondern dass der von diesem Klickereignis ausgeführte Code seinen Zweck erfüllt.

Was Sie wirklich wollen, ist zu testen, der zugrunde liegende Code tut, was es sollte, damit Ihre UI-Ebenen diesen Code mit Sicherheit ausführen können.

0

Sie sollten Logik und Präsentation trennen. Mit MVP (Model-View-Presenter)/MVC- (Model-View-Controller) -Mustern können Sie Ihre Logik testen, ohne auf UI-Ereignisse angewiesen zu sein. Sie können auch White framework verwenden, um Benutzereingaben zu simulieren. Ich würde Ihnen wärmstens empfehlen, Microsofts Patterns&Practices developer center zu besuchen, besonders sehen Sie sich Composite Application Block und Prism an - Sie können eine Menge Informationen über testgesteuertes Design bekommen.

0

Die Teile Ihrer Anwendung, die mit der Außenwelt kommunizieren (z. B. Benutzeroberfläche, Datenbank usw.), sind immer ein Problem beim Komponententest. Der Weg dahin ist eigentlich nicht, diese Schichten zu testen, sondern sie so dünn wie möglich zu machen. Für die Benutzeroberfläche können Sie einen einfachen Dialog oder eine Ansicht verwenden, die nichts wert ist, getestet zu werden, und dann die gesamte Logik in eine Controller- oder Presenter-Klasse einfügen. Sie können dann ein Mock Framework verwenden oder Ihre eigenen Mock-Objekte schreiben, um gefälschte Versionen der Ansichten zu erstellen, um die Logik in den Presentern oder dem Controller zu testen. Auf der Datenbankseite können Sie etwas ähnliches tun.

Testen von Ereignissen ist nicht unmöglich. Sie können zum Beispiel eine anonyme Methode für das Ereignis subskribieren, das eine Ausnahme auslöst, wenn das Ereignis ausgelöst wird, oder die Anzahl zählen, wie oft das Ereignis ausgelöst wird.

1

Read this, wenn Sie mit UI Testing

manuell Test UI Zeug zu kämpfen, wo es Nutzen minimalen Kosten zu automatisieren ist. Testen Sie alles unter der Oberfläche der Benutzeroberfläche rücksichtslos. Verwenden Sie Humble Dialog, MVC oder Varianten, um Logik und UI klar und lose gekoppelt zu halten.