Frage

Ich glaube fest Komponententests im Rahmen des Bau von großen Multi-Plattform-Anwendungen in Verwendung. Wir sind derzeit die Planung in einem separaten Projekt unsere Komponententests zu müssen. Dies hat den Vorteil unserer Code-Basis sauber zu halten. Ich glaube jedoch, dass dies den Testcode aus der Umsetzung der Einheit trennen würde. Was halten Sie von diesem Ansatz und gibt es Tools wie JUnit für c ++ Anwendungen?

War es hilfreich?

Lösung

Es gibt viele Testeinheit frameforks für C ++. CppUnit ist sicherlich nicht das, was ich wählen würde (zumindest in seiner stabilen Version 1.x, wie es viele Tests fehlt, und erfordert eine Menge redundanter Zeilen Code). Bisher mein bevorzugter Rahmen ist CxxTest , und ich plane, auf der Bewertung Fruktose eines Tages.

Jede Art und Weise, gibt es ein paar "Papiere", die C ++ TU-Frameworks bewerten:

Andere Tipps

Das ist ein vernünftiger Ansatz.

Ich habe sehr gute Ergebnisse sowohl mit Unittest ++ und Boost.Test

Ich habe bei CppUnit sah, aber für mich, es fühlte sich eher wie eine Übersetzung des JUnit Sachen als etwas in C ++ richtet.

Update: In diesen Tagen ich lieber mit Fangen . Ich fand es effektiv und einfach zu bedienen sein.

Sie sollten Ihren Basiscode auf eine gemeinsamen genutzten (dynamisch) Bibliothek trennen und dann den größten Teil Ihrer Unit-Tests für diese Bibliothek schreiben.

Vor zwei Jahren (2008) Ich wurde von der Linux Foundation zum Einsatz in großen LSB Infrastructure Projekt beteiligt. Eines der Ziele dieses Projektes war es Unit-Tests für 40.000 Funktionen aus den Linux-Kern-Bibliotheken zu schreiben. Im Rahmen dieses Projektes haben wir die AZOV Technologie erstellt und das grundlegende Werkzeug namens API Sanity Autotest- , um automatisch alle Tests zu erzeugen. Sie können versuchen, dieses Tool zu verwenden Unit-Tests für Ihre Basisbibliothek (n).

zu erzeugen,

Ich benutze Unittest ++. Die Tests sind in einem separaten Projekt, aber die eigentlichen Tests sind mit dem eigentlichen Code miteinander verflochten. Sie existieren in einem Ordner unter dem Abschnitt unter Test. dh:
MyProject \ src \ <- Quelle der eigentlichen App
MyProject \ src \ Tests <- die Quelle der Tests
Wenn Sie Ordner verschachtelt haben (und wer nicht), dann werden auch sie ihre eigenen \ Tests Unterverzeichnis haben.

CppUnit ist eine direkte Äquivalent von JUnit für C ++ Anwendungen http://cppunit.sourceforge.net/cppunit-wiki

Persönlich habe ich die Unit-Tests in einem anderen Projekt, und erstellt eine separate Build-Konfiguration, die all Unit-Tests und abhängig Quellcode gebaut. In einigen Fällen wollte ich privat Mitglied FunctionsS eine Klasse testen, so machte ich die Test-Klasse für das Objekt ein Freund Klasse getestet werden, aber die Freundin Erklärungen verstecken, als in „Nicht-Test“ -Konfigurationen durch Präprozessor Erklärungen zu bauen.

I endete diese Codierung Gymnastik bis zu tun, wie ich wurde jedoch Tests in Legacy-Code zu integrieren. Wenn Sie mit dem Zweck der Einheit anfangen, ein besseres Design testen kann einfach sein.

Sie können eine Einheit Testprojekt für jede Bibliothek in Ihrem Quellbaum in einem Unterverzeichnis dieser Bibliothek erstellen. Sie enden für jede Bibliothek mit einem Testfahrer Anwendung auf, die es einfacher auszuführen, um eine einzelne Reihe von Tests machen. Indem man sie in einem Unterverzeichnis setzen, hält es Ihre Code-Basis sauber, sondern hält auch die Tests der Nähe des Codes.

Scripts leicht geschrieben werden können alle Testsuiten in Ihrem Quellbaum und sammeln die Ergebnisse auszuführen.

Ich habe mit großem Erfolg eine angepasste Version des ursprünglichen CppUnit seit Jahren verwendet, aber es gibt jetzt andere Alternativen. GoogleTest sieht interessant aus.

Ich denke, Ihr auf dem richtigen Weg mit Unit-Tests und die einen großen Plan Zuverlässigkeit Ihres Produkts zu verbessern.

Obwohl Unit-Tests nicht alle Probleme gehen zu lösen, wenn die Anwendung auf verschiedenen Plattformen oder auch unterschiedliche Betriebssysteme zu konvertieren. Der Grund hierfür ist die Prozesseinheit testings durch Fehler geht in der Anwendung aufzudecken. Es wirft nur einfach so viele Eingänge vorstellbar in Ihr System und wartet auf ein Ergebnis am anderen Ende. Es ist wie ein Affe immer ständig auf die Tastatur hämmern auf und Beobachten der Ergebnisse (Beta-Tester).

Um es auf den nächsten Schritt, mit guten Unit-Tests müssen Sie auf Ihre innere Gestaltung Ihrer Anwendung konzentrieren. Der beste Ansatz, den ich fand, war ein Design-Muster oder Design-Prozess „Auftragsprogrammierung“ oder „Design by Contract“ genannt zu verwenden. Das andere Buch, das für den Aufbau Zuverlässigkeit in Ihr Core-Design war sehr hilfreich ist.

Testen des Entwicklungsprozesses: Praktische Strategien für Staying Focused, Schlagen Schiff Termine und Aufbau solide Teams

.

In unserem Entwicklungsteam haben wir uns sehr genau an, was wir als ein Programmierer Fehler, Entwickler Fehler sein, Design-Fehler und wie wir beid Unit-Tests verwenden könnten und auch den Aufbau Zuverlässigkeit in unser Softwarepaket über die DBC und nach den Anweisungen Debuggen der Entwicklung proccess.

Mit http://tut-framework.sourceforge.net/ sehr einfach, Header nur Datei nur keine Makros. Kann XML-Ergebnisse erzeugen

CxxTest lohnt sich auch ein Blick für leichte, einfache Cross-Plattform-JUnit verwenden / CppUnit / xUnit- wie Rahmen für C ++. Wir finden es sehr einfach hinzufügen und entwickeln Tests

Aeryn ist eine andere C ++ Testing Framework-Wert von

suchen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top