mrjerk: was wird alles per Unittest getestet?

Beitrag lesen

Hallo,

Ich frage mich ob ich diese Schicht auch testen soll. Der Test würde dann in etwas so aussehen:
Bei User Anmeldedatum setzten
User in Schicht 3.5
bei TemplateEnginge gucken ob Anmeldedatum richtig erzeugt wurde

Genau.
Dann würdest Du also einen UserMock bauen, der nichts können muss, ausser, dass man von ihm einen Timestamp auslesen kann. Dein Test würde dann den diesen User(-mock) nehmen, ihn in die Schicht 3.5 stecken und prüfen, ob das herauskommende Datum so ist, wie Du es haben willst (also lesbar).

Kommt jetzt ein weiteres Feld zum User müsste dieses auch wieder getestet werden und so weiter...
Das sieht für mich nach einer enormen Wartungsvollen Sache aus. Deswegen hätte ich diesen Part manuell vorgenommen?

In der Tat, primitive Operationen würde ich auch nicht immer unit-testen. Wenn ein "User.setAnmeldedatum(...)" funktioniert, wird vermutlich auch ein "User.setVorname(...)" und ein "User.setPasswort(...)" funktionieren.
Interessant sind Unit-Tests immer dann, wenn komplexe Logik dahinter steht, wo man leicht etwas kaputt machen kann, wenn man etwas ändert/erweitert.

Wobei ich mir auch die Frage stelle ob ich total simple Controller auch auf Unittests stellen soll.

Das ist schwierig zu beantworten. Selten wird wirklich alles unit-getestet (weil bei manchen Komponenten der Aufwand im vergleich zum Risiko zu hoch ist).
Eine Testabdeckung von 70-80% würde ich in der Web-Entwicklung meist als ausreichenden Kompromiss zwischen Aufwand und Robustheit sehen. Meines Wissens wird aber z.b. im Flugzeugbau oder der Raumfahrt eine Testabdeckung von 100% (oder zumindest sehr nahe an diesem Wert) gefordert - was extrem aufwändig ist, denn die letzten Prozentpunkte Coverage machen das Test-Schreiben EXTREM zeit-intensiv.

Letztendlich hängt es davon ab, wie hoch Du das Risiko einer bestimmten Komponente siehst, dass sie sich (durch Modifikationen usw.) irgendwann nicht mehr so verhält, wie sie soll (möglicherweise sogar völlig unbemerkt), und wie kritisch ein solcher Fehler wäre.

Viele Grüße,
Jörg