Wie testest du den Anwendungs- und UI-Code?

10

Ich liebe es, Unit-Tests zu schreiben und bin mir einig, dass sie eine hervorragende Möglichkeit sind, Code zu testen, Regressionen zu verhindern usw. Ich bin jedoch nicht in der Lage, sie zu schreiben, da der überwiegende Teil des Codes, an dem ich Tag für Tag arbeite, Anwendung ist Code, der dem Benutzer eine Benutzeroberfläche anzeigt. Gibt es eine gute Möglichkeit, Anwendungscode für Unit-Tests zu testen? Was sind hier die Best Practices?

Ich suche keine spezifische Antwort wie ein Framework usw. Aber wie gehen Sie generell mit diesem Problem um?

Justin Ethier
quelle
Was ist "Anwendungscode, der die Benutzeroberfläche anzeigt"? Sprechen Sie über das C in MVC?
Martin Wickman
Ich spreche über jede Art von grafischer Oberfläche - JavaScript / HTML, C ++ mit MFC, WinForms, WPF usw.
Justin Ethier
MVVM ist einfach zu testen. Siehe MVVM- Befehlsmuster.
Amir Rezaei
@amir - Haben Sie Referenzen oder zusätzliche Informationen?
Justin Ethier

Antworten:

8

Zum Testen der tatsächlichen Benutzeroberfläche funktioniert Selenium gut.

Wenn Sie tatsächliche Komponententests wünschen, besteht Ihre Strategie darin, so viel Logik wie möglich von der tatsächlichen Benutzeroberfläche zurückzuschieben, normalerweise in einem ViewModel-Objekt. Sie können dann Komponententests für das ViewModel-Objekt schreiben.

Mit anderen Worten, fügen Sie so wenig Logik wie möglich in die eigentliche Benutzeroberfläche ein, damit der Komponententest an anderer Stelle stattfinden kann.

Robert Harvey
quelle
Das ist ein gutes Design für SoC. Es sollte keine Domänen- / Geschäftslogik in der Benutzeroberfläche geben. Eine Menge Client-Logik - Interaktivität / Validierung kann in der Benutzeroberfläche mit JavaScript erfolgen, das in Einheiten testbar ist.
StuperUser
1

Ich hatte Erfolg beim Unit-Test meiner Anwendung mit MSTest und beim Testen meines Javascript mit QUnit und beim Aufnehmen der Ergebnisse dieser Tests mit einem einzigen MSTest-Unit-Test, der WatiN verwendet (mir wurde Selenium vorgeschlagen , das auch Tests aufzeichnen kann, aber fand WatiN besser für eine saubere Automatisierung).

StuperUser
quelle