2010-11-22 9 views
2

Also in der Regel meine Anwendungen sind sehr klein und mein Test-Framework ist nur ein Konsolenprojekt. . Ich füge dort Klassen mit statischen Methoden hinzu und teste meinen Code. Ich finde diesen Ansatz ziemlich einfach und schön (vor allem, da Sie die Ausgabe sehen können)einige grundlegende Fragen zum Testen oder Komponententest

Ich habe jetzt ein schönes kleines Testprojekt im Visual Studio, also war ich ein wenig verwirrt darüber, wie Sie Dinge testen würden, die nicht funktionieren ‚scheinen t Einheit wie, zum Beispiel:

Purchase.LoadAllAsync()//finished loading on the loadcomplete event 

Welche Art von Gerät zu testen würde ich dies schreibe? Vor allem, weil sich das aufgrund der Daten in der Datenbank ändern würde?

Ich habe SO einige Scouting auf und fanden diese: When is a Test not a Unit-test?

Was mich weiter verwirrt, wenn ein Test kein Unit-Test ist, wie würden Sie es testen?

Manchmal schreibe ich in der Regel nur eine kleine Testfunktion in das Hauptformular oder die Hauptseite in silverlight und lösche sie dann einfach aus. Aber ich denke Unit-Tests werden verwendet, weil die Tests dort bleiben müssen, damit Sie sie richtig verwenden können?

Es tut mir leid, wenn ich ein wenig zu ignorant bin! = P
Dank

aktualisiert


wollte auch hinzufügen: Was Tests, die in der Anwendung gut laufen selbst, sondern, wenn sie von externem Code genannt es funktioniert nicht. (Das ist mir schon ein paar Mal passiert) Ist es euch auch passiert und/oder bedeutet das schlechtes Design?

+0

mögliche Duplikate von [einige grundlegende Fragen zum Testen oder Komponententests] (http://stackoverflow.com/questions/4243374/some-basic-questions-on-testing-or-itet-testing) –

+0

@Pieter You ' Bin ich mit meiner Frage verbunden? – gideon

+0

@Pieter, nur _ein_ von ihnen kann ein Duplikat sein, man muss das Original sein :-) – paxdiablo

Antwort

5

Wenn Ihre Tests sind abhängig von Umständen, die außerhalb Ihrer Kontrolle, die erste, was Sie tun sollten, ist, sie unter Kontrolle bekommen :-)

Mit anderen Worten: Ihr Test eine Testdatenbank und als Teil verwenden sollten des Setups sollte es leer sein und dann diese Datenbank mit bekannten, vorhersagbaren Daten füllen. Alternativ können Sie Stub-Routinen einfügen und den Datenbankzugriff vollständig vermeiden.

Ein nicht-deterministischer Test ist ungefähr so ​​nützlich wie eine Sojamilchkuh. Es kann scheinen zu arbeiten, aber irgendwie sind die Ergebnisse nicht so zufriedenstellend, wie Sie erwartet haben.

+0

ok was ist mit der async-methode? Wie würde ich behaupten, was es lädt, wenn es später lädt? – gideon

+1

Wenn es async ist, müssen Sie die sofortige Rückkehr überprüfen und dann entweder (1) eine Async-Operation-Vollständigkeitsanzeige an einem Punkt (mit einer geeigneten Zeitüberschreitung) erfassen oder (2) regelmäßig überprüfen, ob es schließlich die Daten lädt mit einem Timeout). Da eine asynchrone Operation ohne Anzeige nicht sehr nützlich ist, ist (1) wahrscheinlich der wahrscheinlichste Fall, aber Sie müssen (2) ggf. verwenden. – paxdiablo

+0

@paxdiablo Wie würde (1) in Visual Studios Unit Test env arbeiten? Ein Komponententest ist nur eine statische Methode, oder? – gideon