Ein weiterer Vorteil ist, man deckt leichter Flüchtigkeitsfehler auf. Hatte ich erst heute in Code von mir.
Eingabe eine Adresse, die dann durch einen externen Service auf korrektheit geprüft werden soll.
Wenn ich also im UI irgendein Feld der Adresse ändere, muss die Adresse als "Ungeprüft" markiert werden.
Das hatte ich beim schreiben bei fast allen Felder auch gemacht - nur beim Ort hatte ich es vergessen. Als ich die Tests geschrieben habe, ist das dann sofort aufgefallen. Und die ganzen Konstellationen testest man im UI nicht in der Gründlichkeit durch, wie man Testfälle schreibt.
Mit Testfällen kann man auch viel viel schneller verschiedene Konstellationen abdecken. Was ist z.B. bei deiner Methode mit negativen Höhen/Grundflächen? Was ist wenn Höhe oder Grundfläche 0 ist?
Wenn ich Unit-Tests schreibe, lege ich immer viel Wert auf Eingabeparameter die nicht offensichtlich richtig sind. Das heißt, was ist wenn man null bergibt? Was ist wenn bei bei Zahlen negative Werte oder 0 übergibt? Was ist wenn man bei Strings einen Leerstring übergibt? Man stellt so oft beim Test schreiben fest, dass man in der Entwicklung ein paar Sonderkonstellationen übersehen hat.
Das Ziel sollte nicht sein eine Testmethode für eine Methode zu schreiben - sondern viele Testmethoden für unterschiedliche Konstellationen.