2010-04-23 7 views

Respuesta

3

Editar: He votado por respuesta de Michael Anderson, ya que es más específico sobre el código exacto de CppUnit, mientras que el mío es una respuesta más general.

En pseudocódigo, va a ser algo como esto:

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

Notificación de fallos de las pruebas en CPPUnit se realiza mediante el lanzamiento de un tipo de excepción personalizada. Llamaremos a eso CppUnitException aquí por simplicidad.

CPPUNIT_ASSERT_THROW es una macro que se expandirá a algo que es esencialmente la siguiente:

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

Si expression tiros (como es de esperar que a), se cae en el bloque catch que no hace nada.

Si hace expressionno tiro, la ejecución continúa en la línea de código que lanza CppUnitException, que dará lugar a una falla de la prueba.

Por supuesto, la implementación de la macro CPPUNIT_ASSERT_THROW es en realidad un poco más lujosa, por lo que también se informa la información de línea y archivo, pero esa es la esencia general de cómo funciona.

Cuestiones relacionadas