2008-12-22 18 views
22

Wie kann ich tun Unit-Tests in C++ zu beginnen?Unit-Tests in C++

Ich habe Junit beim Programmieren in Java verwendet und fand es sehr nützlich. Gibt es in C++ etwas Ähnliches? Was empfehlen Sie ?

+6

@Kim: Ja, und dieser neue Service führte mich hier, dank dieser Frage. SO sind nicht nur Fragen und Antworten, sondern auch die Meinung und das Feedback der Community zu den Antworten. – ereOn

Antwort

7

Überprüfen Sie CppUnit, es ist der jUnit-Port nach C++.

1

Ohne zu wissen, auf welche Plattform/Compiler Sie zielen, kann ich nur eine allgemeine Empfehlung abgeben. Ich habe this (CppTest) ein ziemlich erfolgreich in der Vergangenheit verwendet. Es gibt ein einfaches Framework namens UnitTest++, das interessant aussieht.

6

Gut aufgerundet here.

Wir verwenden Boost.Test, und wir sind in der Lage, gute Cross-Plattform kontinuierliche Integration zu tun.

2

Mein persönlicher Favorit ist TUT. Die zwei Hauptgründe sind, dass 1) es keine Java-Ismen bei dir erzwingt, aber nutzt, was C++ ist, und 2) du Kontrolle darüber hast, die ausführbare Datei schreibend (ich habe eine Vorlage benutzt), die Berichte usw (standardmäßig eine Stream-basierte Version)

Für mich entspricht es sehr der Philosophie von KISS, 2 Header, keine Makros, keine Parser, einfach nur alter C++ - Code mit einem winzigen Skelettcode.

http://tut-framework.sourceforge.net/

7

UnitTest++, Legende besagt, dass Unittest ++ durch den Autor dieses comparison der Einheit Test-Frameworks geschrieben wurde.

+0

+1, ich benutze dieses Framework und kann es empfehlen! Es ist mehr als nur eine Legende. Die Version 1.0 ist hier: http://gamesfromwithin.com/unittest-v10-released (auf dem gleichen Blog wie der obige Link ...) – Kleist

3

Ich habe mit jedem C++ Unit Testing Framework nicht glücklich gewesen. Da C++ keine Spiegelung hat, ist es schwierig, praktische Unit-Test-Tools zu schreiben. CxxTest ist ungefähr so ​​gut wie ich gefunden habe. Ich habe es in einigen Projekten verwendet, aber normalerweise schreibe ich meine eigenen Tests entweder ohne ein Framework oder mit einem rohen Framework, das ich selbst geschrieben habe.

+0

Sie möchten vielleicht CATCH (Link von meiner Antwort) auschecken – philsquared

1

Aeryn ist ein weiterer C++ Testing Framework-Suche im Wert von

8

Ich schrieb vor kurzem eine 5-teilige Reihe von Blog-Posts über Unit-Tests in C++ mit Boost. Es gibt Schritt für Schritt Anweisungen für wie das in Visual Studio getan wird.

  • Part 1: wie in C Herstellung von Unit-Tests beginnen ++ mit Boost.Test.

  • Part 2: das Assertion-Framework von Boost.Test im Kontext einer einfachen Programmierübung, die testgetriebene Entwicklung demonstriert.

  • Part 3: Fortsetzung der testgetriebenen Entwicklung, um die Funktionalität der PrimeFactors :: Generate-Methode zu vervollständigen.

  • Part 4: Testgesteuerte UI-Entwicklung.

  • Part 5: die Einrichtungen in Boost.Test für gemeinsame Auf- und Abbau Aktionen zwischen den Tests zu teilen und Tests in Suiten zu organisieren.

2

Ich habe gerade mein eigenes Framework, CATCH, rausgeschmissen. Es ist noch in der Entwicklung, aber ich glaube, es übertrifft bereits die meisten anderen Frameworks. Verschiedene Leute haben unterschiedliche Kriterien, aber ich habe versucht, den meisten Boden ohne zu viele Kompromisse abzudecken. Werfen Sie einen Blick auf meinen verlinkten Blog-Eintrag für einen Vorgeschmack. Meine Top fünf Merkmale sind:

  • Kopf nur
  • Auto Registrierung von Funktion und Methode basierten Tests
  • Zerfällt Standard C++ Ausdrücke in LHS und RHS (so brauchen Sie nicht eine ganze Familie von assert Makros) .
  • Unterstützung für verschachtelte Abschnitte innerhalb einer Funktion basiert Befestigung
  • Namen Tests in natürlicher Sprache - Funktion/Methodennamen

erzeugt werden es auch Objective-C-Bindungen hat.

Verwandte Themen