3 Kniffe für bessere Unit Tests

11.11.2016 11:11

Jeder braucht es, keiner will es: Auf der DDC - .NET Developer Conference gibt Dennis Doomen 12 Tipps für besseres Testing – im DWX-Blog verrät er vorab drei Kniffe.

 

Testing ist wichtig, darf aber nicht zu Lasten der Performance gehen. Genau diese hat Dennis Doomen im Blick in seiner Session „12 tips to write unit tests that don’t cripple your codebase“ am 06.12. im Rahmen der DDC - .NET Developer Conference 2016 in Köln.

  • Improve the readability, maintainability and discoverability of your unit tests. And it's not just about practicing Test-Driven Development. It's more about proper naming, structuring, conventions and assertion libraries. (Mehr >>)

 

Die Formel für Erfolg in einem Vorhaben ist, zu “beginnen mit dem Ende im Sinne” – und das gilt auch für die Softwareenwicklung. Das Ziel klar vor Augen zu haben macht es viel einfacher, eben dieses zu erreichen. Exakt diese Philosophie steht auch hinter TDD – Test Driven Development. Hier wird sozusagen das Pferd von hinten aufgezäumt: Vor dem eigentlichen Coden wird ein Test angelegt, der als detaillierte Spezifikation für das Endergebnis herhält. Beim ersten Ausführen liegt es in der Natur der Sache, dass das Ergebniss „Rot“ ist, denn der Code hat noch keine Funktion. Sobald der Test „Grün“ ergibt, sind also die Anforderungen erfüllt. Damit wird der Umfang der Codebasis kontrolliert ebenso wie die Kosten. Die Effizienz wird gesteigert und Softwarequalität von Anfang an eingebaut. Somit ist TDD als Werkzeug für den Entwickleralltag unbedingt zu empfehlen. Ein Bestandteil davon sind die Unit Tests, wozu Dennis Doomen auf der DDC zwölf Tipps verrät, die sich bei ihm im Einsatz bewährt haben.

 

Vorab verrät Dennis drei Tipps, um die Softwarequalität zu steigern:

  1. DRY: nur zurückhaltend
    Bei Unit Tests heißt es, die DRY-Prinzipien (Don't repeat yourself) sehr vorsichtig anzuwenden, da diese leicht Ursache und Auswirkung verschwimmen lassen. Das trifft vor allem dann zu, wenn Basisklassen und/oder Klassen-Hierarchien verwendet werden.
     
  2. Ursache und Auswirkung
    Von Beginn an müssen Ursache und Effekt des Tests klar sein. Ein Test, der einen Fehler ausgibt, kann nicht demotivierender sein, als wenn der Sinn nicht verständlich ist. Auf einen Blick sollten Ursache und Effekt klar sein entweder beim Test-Namen oder der Implementierung. Wer TDD vorbildlich anwendet, hat damit in einem die Dokumentation an der Hand. Also: Unit Test lesbar machen - wie ein Buch.
     
  3. Eindeutige „Fail“-Meldung
    Wirft ein Test einen Fehler, sollte die Notifikation so eindeutig sein, dass kein zusätzliches Debugging notwendig ist. Es ist kein "Luxus" eine ordentliche Assertion Library zu verwenden, z.B. Fluent Assertions von Dennis Doomen. Denn mit Fluent Assertions werden Assertionen wunderschön, natürlich und in höchsten Maße lesbar. Zu vermeiden sind beim Gebrauch von FakeitEasy (eine "easy mocking library" für .NET) Konstrukte wie das nachfolgende. Denn enthalten die Site und Identity Properties eines Befehls mehr als den erwarteten Wert, wird ein Debugger notwendig zur Fehlerermittlung.
     

    A.CallTo(() => commandService.Execute(A.That.Matches(cmd =>
    (cmd.Site == new SiteName(equipment.Owner.ToString())) &
    (cmd.Identity == equipment.Code))))
    .MustHaveHappened();

 

Neun weitere Tricks und Kniffe fürs Unit Testing teilt Dennis Doomen am 06.12. in seinem Vortrag „12 tips to write unit tests that don’t cripple your codebase“ auf der DDC - .NET Developer Conference 2016 in Köln. Leser des DWX-Blogs erhalten mit dem Anmeldecode DWX16blog einen Rabatt von 15 % bei Online-Anmeldung.

Schlagwörter: Qualität , Agilität


Autor Dennis Doomen

Dennis is an experienced .NET architect with a broad interest in Application Lifecycle Management, SOA, OO and Design Patterns. He is specialized in designing enterprise solutions based on the .NET technologies as well as providing coaching on all aspects of designing, building and maintaining enterprise systems. He is the author of www.fluentassertions.com, an assertion framework for fluently asserting the outcome of unit tests and he has publishing coding guidelines for C# 3.0, C# 4.0 and C# 5.0 on www.csharpcodingguidelines.com since 2001. He also maintains a blog on his everlasting quest for better solutions at www.continuousimprover.com. You can reach him on twitter through @ddoomen.

Dennis Doomen

Developer Week in Social Media

Folgen Sie uns auf:

Aussteller & Sponsoren

Infos anfordern

Infos anfordern
  • Florian Bender
  • Projektleitung
  • Tel.: +49 (89) 74117-206
  • Fax: +49 (89) 74117-448
  • E-Mail: florian.bender@nmg.de

Medienpartner