BOOST_CHECK_NO_THROW Wie bekomme ich Exception Message ausgedruckt?

8

Wenn ich eine Methode mit

teste %Vor%

und eine Ausnahme wird ausgelöst, es wird angezeigt, dass eine Ausnahme ausgelöst wurde, aber niemals die Ausnahme wie folgt:

%Vor%

Ist es möglich, die Ausnahmebedingungsnachricht ebenfalls zu drucken, d. h. die von my_exception.what() ? my_exception wird von std::exception und Überladungen what() abgeleitet.

    
550 28.02.2013, 10:36
quelle

2 Antworten

5

Ich habe ein wenig in den Boost-Headern gelesen und BOOST_CHECK_NO_THROW_IMPL in meiner eigenen Header-Datei neu definiert, die ich im Projekt verwende, um das Boost-Verhalten neu zu definieren. Jetzt sieht es so aus:

%Vor%

Die Nachteile sind: Es funktioniert, solange es keine Änderungen in BOOST _ * _ NO_THROW

gibt

und

Die Ausnahmebedingungsnachricht wird gedruckt, bevor sie in der Testausgabe als Fehler markiert wird. Das sieht in erster Linie ein bisschen schade aus, deshalb gruppiere ich die Ausgabe, indem ich "---" in den Outstream schreibe, um das Lesen zu verbessern. Aber Code nach BOOST_CHECK_IMPL wird nie erreicht werden.

Die obige Lösung funktioniert ganz gut für mich. Fühlen Sie sich frei zu verwenden, wenn Sie das gleiche wünschen =)

(Verwenden Sie CDash für Ctest-Ausgabe, vergessen Sie nicht, das Test-Output-Limit zu erhöhen, oder deaktivieren Sie einfach das Limit: Ссылка )

    
550 22.05.2013, 21:00
quelle
5

Ich war genervt von dem gleichen Problem mit BOOST_REQUIRE_NO_THROW . Ich habe es gelöst, indem ich einfach BOOST_REQUIRE_NO_THROW entfernt habe. Dies führt zu einer Ausgabe wie:

%Vor%

und bricht den Test ab (geht aber mit dem nächsten Text weiter), was ich wollte. Das hilft allerdings nicht sehr, wenn Sie BOOST_CHECK_NO_THROW oder BOOST_WARN_NO_THROW verwenden wollten.

    
Trebor Rude 24.04.2013 23:12
quelle

Tags und Links