2009-04-06 3 views
1

Wie effektiv ist das CXX-Testframework, da Sie Unit-Testfälle um den von Ihnen geschriebenen Code schreiben. Irgendein Fehler im Code könnte auch in einen Fehler im Einheitentestcode übersetzt werden? Ist es nicht so etwas wie zwei Negative, die positiv sind?CXX-Testframework für C++

Auch der Aufwand für CXX ist mindestens gleich, wenn nicht mehr als der Programmieraufwand.

Brauchen Sie Ihre Gedanken dazu, da ich nicht dafür bin, dass dieses Framework in meinem Projekt verwendet wird, und ich bin auf der Suche nach starken Gegensätzen.

Auf der anderen Seite, wenn Sie denken, es ist vorteilhaft, bitte erleuchten Sie mich :).

Antwort

2

CXX ist nicht sehr aktiv, und der Test der schreibenden Einheit erfordert im Allgemeinen eine Menge Anstrengungen. Aber wenn das erste Refactoring eintrifft, sind Sie sehr dankbar für die Mühe.

Ich habe Boost.Test & CPPUNIT verwendet. Ich würde lieber ein bisschen Boost.Test, aber ja, Sie müssen Ihre eigenen Projekte, Dateien usw. schreiben

Wenn Sie ein Werkzeug kennen, um Ihr Skelett aus Ihrem Code zu generieren, bin ich ganz Ohr. :)

Ich würde vorschlagen, dass Sie versuchen, Boost.Test und CPPUNIT. Wenn Sie denken, dass es besser ist, wird es Ihnen gute Runden geben, um CXXUNIT zu widerstehen, da Sie Alternativen vorschlagen werden.

+0

CxxTest muss nicht aktiv sein. Im Gegensatz zu CppUnit ist es vollständig und einfach zu verwenden. Es ist nur Peinlichkeit kommt von der No <*stream> Abhängigkeitspolitik. –

+1

Es tut mir leid, dass Sie mir nicht zustimmen, aber es ist wichtig, dass Sie die gewartete Software verwenden. Was passiert, wenn es mit Ihrem Compiler inkompatibel wird? Wann ist ein Fehler? Machst du es selbst? –

+4

In anderen Fällen habe ich zugestimmt. CxxTest verwendet keine erweiterten C++ - Templates, keine RTTI, keine Exceptions oder die meisten Standardbibliotheken, um mit den meisten älteren Compilern und zukünftigen Compilern kompatibel zu sein. Und wenn ich das Tool patchen muss, werde ich es tun, es ist ein sehr einfacher Rahmen. –

2

Ich benutze Cxxtest. Regressives Testen ist eine kostspielige Aufgabe, die wir nur zur Validierung unserer Softwarebibliotheken verwenden, die eine plattformunabhängige Schicht für unsere Apps bereitstellen. Damit soll sichergestellt werden, dass alle Änderungen keinen Einfluss auf die Stabilität des Codes haben, da so viele Apps und Projekte davon abhängig sind.

Wir verbinden cxxtest mit Coverage-Analyse, um sicherzustellen, dass die Testabdeckung ausreichend ist und mit CruiseControl zu automatisieren.

Aber das machen wir nicht für Apps. Zu viel Aufwand.

Der Aufbau einer Test-App ist genauso schwierig wie das Schreiben der gesamten Bibliothek. Ich stimme zu, dass Sie herausfinden müssen, ob es sich lohnt.

Ich denke, Joel etwas dazu zu sagen hat über zu: http://www.joelonsoftware.com/items/2009/01/31.html

+0

"Wir verbinden cxxtest mit Coverage-Analyse, um sicherzustellen, dass die Testabdeckung ausreicht und mit CruiseControl zu automatisieren." Wie hast du das gemacht? Was ist das Abdeckungswerkzeug? –

+0

Wir verwenden VectorCAST. Es ermöglicht die Instrumentierung des Quellcodes, bevor er an den Compiler übergeben wird. – sep

4

Google bietet einen fantastischen C++ Test-Framework, die ich verwendet habe ... Ich habe nie eine andere C++ Test-Framework und hatte begrenzt Erfahrung mit Junit, und ich konnte diese schnell sehr abholen, da die Dokumentation gut ist. Es ist wichtig, ein gutes Test-Framework zu verwenden, da Tests aufgrund von Frustration mit dem Framework zu wichtig sind, um aufzugeben. Hier ist ein Link:

http://code.google.com/p/googletest/

hoffe, das hilft!

0

Ich bevorzuge Header-Only-Test-Frameworks, hier sind zwei von ihnen: TUT und Catch. Ich habe TUT vorher in mehreren Projekten verwendet und vor kurzem Catch gefunden.

1) TUT - C++ Template Unit Test Framework

TUT ist eine kleine und tragbare Gerät Test-Framework für C++.

  • TUT ist sehr tragbar, egal welche Compiler oder OS Sie verwenden.
  • TUT besteht nur aus Header-Dateien. Keine Bibliotheken erforderlich, die Bereitstellung war noch nie einfacher.
  • Benutzerdefinierte Reporter-Schnittstelle ermöglicht die Integration von TUT mit praktisch jeder IDE oder Werkzeug in der Welt.
  • Unterstützung für Multi-Prozess-Tests (Testen von Deadlocks und Timeouts ist im Gange).
  • TUT ist kostenlos und wird unter einer BSD-ähnlichen Lizenz vertrieben.
  • Tests sind in benannte Testgruppen organisiert.
  • Regression (alle Tests in der Anwendung), Ein-Gruppen- oder Ein-Test-Ausführung.
  • Reine C++, keine Makros!

2) Catch - Ein modernes, C++ - nativen, header-only, Rahmen für die Komponententests, TDD und BDD

Was ist der Haken?

Fang steht für C++ Automatisierte Testfälle in Kopf- und ist ein Multi-Paradigma automatisierten Test-Framework für C++ und Objective-C (und vielleicht, C). Es ist vollständig in einer Reihe von Header-Dateien implementiert, aber ist verpackt als eine einzige Kopfzeile für zusätzlichen Komfort.