Unit Testing Framework für C++ / C# ?

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Unit Testing Framework für C++ / C# ?

Beitrag von ponx »

hallo liebe Leute,
es wird Zeit, dass ich mir ein ordentliches Test-Konzept für unsere Musik-Middleware überlege. Das ganze ist im Kern eine native dll unter Windows mit einem .NET-Wrapper drumrum. Ich wollte ja eigentlich das Test-Framework von Visual Studio 2010 benutzen, aber musste dann feststellen, dass Projekte mit nativem C/C++ nicht unterstützt werden..! (ich versteh nicht, warum). Jetzt wollte ich fragen, was ihr mir als Alternative empfehlen könnt ? ich würde die Tests gerne in C# schreiben (da kann ich den Wrapper dann gleich mittesten), und dann ggf mit dem Debugger in den C++-Code reinsteppen können. Wenn's nicht die Welt kostet, zur Not auch kommerziell.

danke und viele Grüße,
ponx
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

Re: Unit Testing Framework für C++ / C# ?

Beitrag von dowhilefor »

Wir, und ich auch privat, benutzen nunit für unsere C# Unittests. Mit unmannaged debugging sollte, da bin ich mir nicht so ganz sicher, es möglich sein beides zu debuggen.
Empfehlenswert dazu ist ein addin was dir das starten der Unittests vereinfacht, da die GUI von nunit nicht die beste und das ständige attachen daran nervig ist. Fürs starten gibt es einige addins für mich das beste ist aber die resharper funktion. Resharper selber kostet aber etwas.
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Unit Testing Framework für C++ / C# ?

Beitrag von kimmi »

EIne Kombination von nunit und cppunit wäre doch was. Außerdem rate ich dir dazu, zwischen reinen Unittests und Komponententests sowie Demos zu unterscheiden. Unittests testen dabei Module ( Klassen ), Komponententests das Zusammenspiel, Demos das Gesamtbild. IN der Regel wird erst dann ein Schhu draus.

Gruß Kimmi
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: Unit Testing Framework für C++ / C# ?

Beitrag von ponx »

vielen Dank euch beiden ! Gibts einen grundsätzlichen Unterschied, wie man Komponententests bzw Demos im Vergleich zu Unitttests aufzieht ? Oder ergibt sich das aus den jeweils getesteten Klassen / Methoden ?
NUnit ist auf jeden Fall einer der Favoriten, vielen Dank. Ich hoff nur ich kann da auch C++ mit erschlagen. Google Test scheint relativ neu zu sein, das guck ich mir neben CppUnit wohl auch noch an.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4256
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Unit Testing Framework für C++ / C# ?

Beitrag von Chromanoid »

Also Komponententests (afaik meistens Integrationstest genannt) sollte man vielleicht nicht automatisch beim neukompilieren ausführen, da die normalerweise mehr Zeit beanspruchen. Zumindest für Java Projekte wird daher oft empfohlen, diese Tests in ein anderes Paket als die unittests zu packen. In der Regel läuft es glaube ich darauf hinaus, dass man eine Art GUIlose Variante der Anwendung mit verschiedenen Komponenten per Code startet und dann eben durch Funktionsaufrufe das Zusammenspiel der Komponenten abtestet.

Es gibt sonst übrigens auch noch Test Management Tools für von Menschen durchgeführte Tests. Ist vielleicht auch noch ganz nützlich, wenn es um komplexere Aufgaben und allgemeine Qualitätssicherung geht...
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Unit Testing Framework für C++ / C# ?

Beitrag von kimmi »

Ich mache Modultests, also wirkliche Tests auf Klassebene gern mit Cppunit / NUnit. Komponenten-Tests bzw. Integrationstest kann man damit ebenfalls machen, ist man sich der Tatsache bewußt, dass man damit halt keine wirklichen Unittests durchführt. Diese dauern in der Regel länger, da man ggfs. noch ein benötigtes Environment hochfahren muß etc. .
Usecases habe ich je nach Anwendungsfall entweder durch eine spezielle Demo abgedeckt oder benutze eine Script-Sprache, sofern die Anwendung unter Test das anbietet bzw. das aufgrund der Komplexität Sinn macht ( zum Beispiel bei einer Engine Kamera animieren etc. ). Dafür habe ich bisher gern Python bzw. Lua genommen. Ich kenne da aber auch Anwendungen, bei denen XML zum EInsatz kommt.

Die Unit-, Komponenten- und Demo-Tests waren immer getrennt, damit man sie auch separat anstarten kann. Unittests zum Beispiel sollten nur einige Sekunden dauern und sind mir ein gutes Hilfsmittel bei der täglichen Arbeit. Komponenten / Integrations-Tests fungieren eher als Smoke-Tests für einen neu releasten Build, der von eine CI-Server angestartet wird.

Gruß Kimmi
Antworten