2010-04-23 2 views

Antwort

3

Edit: Ich habe die Antwort von Michael Anderson upvoted, da er genauer über den genauen Code von CppUnit ist, während meins eine allgemeinere Antwort ist.

In Pseudo-Code, wird es so etwas wie dieses:

try 
    { 
    // Test code that should throw  
    } 
catch(ExceptionType e) 
    { 
    // Correct exception - handle test success 
    return; 
    } 
catch(...) 
    { 
    // Wrong exception, handle test failure. 
    return; 
    } 
// No exception, handle test failure. 
return; 
6

Berichterstattung von Testfehler in CppUnit über Werfen einer benutzerdefinierten Ausnahme Typ. Wir nennen das CppUnitException hier zur Vereinfachung.

CPPUNIT_ASSERT_THROW ein Makro, das auf etwas erweitern, die im Wesentlichen das ist:

try 
{ 
    expression; 
    throw CppUnitException("Expected expression to throw"); 
} 
catch(const ExceptionType & e) 
{ 
} 

Wenn expression wirft (wie wir es erwarten würden), fallen wir in den catch Block, der nichts tut.

Wenn expression tut nicht Wurf, geht die Ausführung zu der Codezeile, die CppUnitException wirft, die einen Testfehler auslösen.

Natürlich ist die Implementierung des CPPUNIT_ASSERT_THROW Makros tatsächlich ein bisschen schicker, so dass Zeilen- und Dateiinformationen ebenfalls gemeldet werden, aber das ist der allgemeine Kern dessen, wie es funktioniert.

Verwandte Themen