Frage

Ich habe CPPUnit als Einheit Test-Framework wurde mit und jetzt versuchen es in einem automatisierten Build und Paketsystem zu verwenden. Doch ein Problem hält mich zurück, dass, wenn ein Absturz auftritt während des Laufs der Unit-Tests, z.B. eine Null-Zeiger-Dereferenzierung, es den Rest der Automatisierung hält.

Gibt es eine Möglichkeit für CPPUnit von Ausnahme zu erholen, die Testfehler aufnehmen und besteht dann graziös anstatt das Gerät zu testen Prozess beendet wird? Auch ein Ansatz spezifisch für Null-Zeiger-Dereferenzierung wäre nützlich, als dass etwa 90% der Ausgaben macht die ich je hatte.

Um technologiespezifische, ich bin mit Makefiles auf einem Windows-System.

War es hilfreich?

Lösung

Sie automatisieren die Ausführung Ihrer cppunit basierten Einheit-Tests während des Build-Prozesses, nicht wahr?

Wenn Sie CppUnit zu benutzen versuchen, den Build-Prozess auszuführen, würde ich versucht sein zu sagen, dass das nicht tun!

Könnten Sie uns sagen, was den Build-Prozess wird beendet, wenn die Unit-Tests zum Absturz? Und was ist Ihre Unit-Tests gestartet, indem ein Makefile, ein Skript von Ihrer eigenen, oder ein kontinuierlicher Integration Rahmen ?


Um zu versuchen, Ihre Frage zu beantworten, kann CppUnit nicht aus der Verletzung oder Segmentierungsfehlern erholen. Auf Unix-ähnlichen Systemen sollten Sie in der Lage sein, den SIGSEGV zu fangen und fortzusetzen, und in dem Zustand ?

Wenn Sie Ihre Abstürze in Ihrem Gerät zu testen auftreten und nicht in dem Produkt, dann würde ich Ihnen empfehlen, auf

Andere Tipps

Es tut uns Leid, dies zu sagen, aber die bisherigen Antworten Sie auf diese eingegangen sind lächerlich. cppunit fehlt wirklich in dieser Hinsicht. cppunit sollte einen EXIT_ON_FAIL Makro implementieren, die Ihnen zu stoppen in den Fenstern die Zugriffsverletzung ermöglicht (mit SetUnhandledExceptionFilter), dann können Sie jeden Bereinigungs tun und läßt cppunit die Fehler über EXIT_ON_FAIL melden. Dann nach der Meldung, die Anwendung beenden.

Als zusätzliche Anmerkung zu jemandem später dieser Frage durchlesen, die ich gefunden habe Unittest ++ können Ausnahmen in Tests fangen und nur den Test mit entsprechenden Informationen nicht eher als in einem Prozess Ausgang führt.

Ich habe es nicht ausprobiert, aber wenn in Windows, ich denke, würde die Verwendung SEH helfen:

__try
{
// running your case
}

__except
{
}

Integration in die CppUnit Rahmen, und jedes Mal eine unbekannte Ausnahme erhalten, den Fall markieren, wie fehlschlagen.

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