[C++] Unittesting

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

[C++] Unittesting

Beitrag von Jonathan »

Also, ich hab mir nochmal erzählen lassen, dass Unittesting ja sowas tolles und geniales sei, und wollte da jetzt auch mal mit anfangen.
Nun gibt es aber ja eine Vielzahl an Toolkits, da wollte ich mal fragen, ob hier jemand schon Erfahrungen damit gemacht hat, und was man empfehlen kann.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

Re: [C++] Unittesting

Beitrag von dowhilefor »

Hm, ich hab bisher die Unit Tests aus der Boost, UnitTest++ und das UnitTest Framework von Visual Studio benutzt. Letzteres lässt sich über Managed C++ auch indirekt für C++ benutzen. Die Integration in VS ist natürlich der große Vorteil, ansonsten geben sich die Sachen nicht soviel. Waren alle ganz brauchbar.
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [C++] Unittesting

Beitrag von Aramis »

In Assimp steckt CppUnit drin. Erkenntnis daraus: überladen, viel zu viel Quellcode. Finger weg, auch von der Lite-Variante.

Ich hab dann mit Alternativen herumprobiert, aktuell bin ich mit googletest rundum zufrieden. Ein minimaler Testcase ist enorm kompakt, Fixtures mit Setup/Teardown usw. werden natürlich auch unterstützt. Ausgabe ist standardmäßig auf der Konsole (dankenswerterweise farbig), wenn was schief läuft merkt man es sofort und nicht erst an einer winzigen Statuszeile ganz am Ende.

Unittests selber sind sinnvoll, aber sie stoßen dann auch recht schnell an ihre Grenzen. Mocking-Frameworks sollen da noch ein bisschen nachhelfen, ausprobier hab ich es bislang noch nicht.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: [C++] Unittesting

Beitrag von kimmi »

Unittests sind als Entwicklungswerkzeug schcon ganz gut, wenn man die eigenen Klassen testen will. Richtig interessant wird es dann, wenn man das Zusammenspiel mehrerer Klassen also Submodul-Tests bauen will. Da helfen wie von Arami schon vorgeschlagen Mock-Objekte, um gegebenenfalls ein Renderdevice zu simulieren. Bei Timing-abhängigen Algorithmen wird es dann aber recht verzwickt.
Beim automatisierten Testen von GUIs arbeiten wir mit sogenannten Monkeys, die der UI Userinteraktionen vorspielen können. Hier ist die Validierung aber recht aufwändig ( zum Beispiel Abgleich von Screenshots ).

Gruß Kimmi
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [C++] Unittesting

Beitrag von Jonathan »

Hmmm
Ich denke ich werde mir erstmal dieses googletest ansehen, um damit erste Unit-Test Erfahrungen zu sammeln.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten