Testgesteuerte Entwicklung bedeutet , dass der Test vor dem Code geschrieben wird und einem bestimmten Zyklus folgt :
- Test schreiben
- Test prüfen (ausführen)
- Produktionscode schreiben
- Test prüfen (ausführen)
- Produktionscode bereinigen
- Test prüfen (ausführen)
Für mich ist dies nur möglich, wenn Sie mit Ihrer Entwicklungslösung sehr schnell zwischen Produktions- und Testcode wechseln und den Test für einen bestimmten Produktionscode-Teil extrem schnell ausführen können.
Obwohl es viele Unit Testing Frameworks für C ++ gibt (ich verwende Bost.Test atm.), Scheint es nicht wirklich eine anständige (für natives C ++ ) Visual Studio (Plugin) -Lösung zu geben, die das TDD erstellt Zyklus erträglich, unabhängig vom verwendeten Rahmen.
"Bearable" bedeutet, dass Sie mit einem Klick einen Test für eine bestimmte CPP-Datei ausführen können, ohne manuell ein separates Testprojekt usw. einrichten zu müssen. "Bearable" bedeutet auch, dass ein einfacher Test startet (Verknüpfung!) Und sehr schnell ausgeführt wird .
Welche Tools (Plugins) und Techniken gibt es also, die den TDD-Zyklus für die native C ++ - Entwicklung mit Visual Studio ermöglichen?
Hinweis: Ich bin mit kostenlosen oder "kommerziellen" Tools einverstanden.
Bitte : Keine Rahmenempfehlungen. (Es sei denn, das Framework verfügt über ein dediziertes Visual Studio-Plugin und Sie möchten das Plugin empfehlen.)
Hinweis zum Bearbeiten : Die bisherigen Antworten enthalten Links zum Integrieren eines Unit Testing-Frameworks in Visual Studio. Die Ressourcen beschreiben mehr oder weniger, wie das UT-Framework kompiliert und Ihre ersten Tests ausgeführt werden. Dies ist nicht , was diese Frage ist. Ich bin der Meinung, dass, um wirklich produktiv zu arbeiten, wenn die Unit-Tests in einem manuell gepflegten (!) Getrennten vcproj von Ihren Produktionsklassen durchgeführt werden, so viel Overhead entsteht, dass TDD "nicht möglich" ist. Soweit mir bekannt ist, fügen Sie einem Java- oder C # -Ding keine zusätzlichen "Projekte" hinzu, um Unit Tests und TDD zu aktivieren, und das aus gutem Grund. Das sollte mit C ++ mit den richtigen Tools möglich sein, aber es scheint (diese Frage ist ungefähr), dass es sehr wenig Tools für TDD / C ++ / VS gibt.
Beim Googeln habe ich ein Tool gefunden, VisualAssert , das in die richtige Richtung zu zielen scheint. Allerdings scheint es nicht weit verbreitet zu sein (im Vergleich zu CppUnit, Boost.Test usw.).
Bearbeiten: Ich möchte dem Kontext für diese Frage einen Kommentar hinzufügen. Ich denke, es ist eine gute Zusammenfassung, um (einen Teil) des Problems zu skizzieren: (Kommentar von Billy ONeal )
Visual Studio verwendet keine "Build-Skripte", die vom Benutzer angemessen bearbeitet werden können. Ein Projekt erzeugt eine Binärdatei. Darüber hinaus hat Java die Eigenschaft, dass Java niemals eine vollständige Binärdatei erstellt - die von Ihnen erstellte Binärdatei ist nur eine ZIP-Datei der Klassendateien. Daher ist es möglich, separat und dann JAR manuell zusammen zu kompilieren (z. B. mit 7z). C ++ und C # verknüpfen beide tatsächlich ihre Binärdateien, sodass Sie im Allgemeinen kein solches Skript schreiben können. Das Beste, was Sie bekommen können, ist, alles separat zu kompilieren und dann zwei Verknüpfungen vorzunehmen (eine für die Produktion, eine für das Testen).
7z
). C ++ und C # verknüpfen beide tatsächlich ihre Binärdateien, sodass Sie im Allgemeinen kein solches Skript schreiben können. Das Beste, was Sie bekommen können, ist, alles separat zu kompilieren und dann zwei Verknüpfungen vorzunehmen (eine für die Produktion, eine für das Testen).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Ich denke nicht, dass das richtig ist. Normalerweise haben Sie auch mehrere Projekte in C #. Sie möchten Ihren Testcode nicht in Ihrer Produktionsbinärdatei versenden.