2011-07-07 6 views

Respuesta

5

Hay dos formas de lograr esto.

primero es escribir su propio detector de eventos:

http://code.google.com/p/googletest/wiki/V1_6_AdvancedGuide#Defining_Event_Listeners

Otra forma es filtrar la entrada del detector de eventos googletest recibe.

Por esta approache se quita el detector de eventos actuales y compartir con su propio

testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->listeners(); 
testing::TestEventListener* listener = listeners.Release(listeners.default_result_printer()); 
listeners.Append(new FailurePrinter(listener)); 

donde FailurePrinter es su propia clase de detector de eventos.

Esta clase debe tener este aspecto

class FailurePrinter : public ::testing::TestEventListener { 

public: 
FailurePrinter(TestEventListener* listener) : TestEventListener() {_listener = listener;} 

virtual void OnTestProgramStart(const UnitTest& unit_test); 
virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); 
virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); 
virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test); 
virtual void OnTestCaseStart(const TestCase& test_case); 
virtual void OnTestStart(const TestInfo& test_info); 
virtual void OnTestPartResult(const TestPartResult& result); 
virtual void OnTestEnd(const TestInfo& test_info); 
virtual void OnTestCaseEnd(const TestCase& test_case); 
virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); 
virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test); 
virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); 
virtual void OnTestProgramEnd(const UnitTest& unit_test); 

protected: 
testing::TestEventListener* _listener; 
}; 

Ahora usted tiene que poner en práctica todos los métodos.

Si le gusta la forma en que el detector de eventos de google imprime algo, solo delegue la llamada al _listener.

O puede modificar el resultado. Por ejemplo:

void FailurePrinter::OnTestPartResult(const TestPartResult& test_part_result) 
{ 
    if (test_part_result.failed()) 
    { 
     _listener->OnTestPartResult(test_part_result); 
     printf("\n"); 
    } 
} 

sólo se Testfailures de impresión.

6

Me encontré con el mismo problema, como estoy seguro de que muchas otras personas tienen. Así que creé esto:

https://gist.github.com/elliotchance/8215283

En caso de ser más o menos pasta y jugar.

+0

Esta debería ser la respuesta aceptada – Purefan

0

Escribí Google Test Pretty Printer, una prueba de escucha/impresora bonita para Google Test, para proporcionar una salida de consola más limpia y atractiva para los programas de prueba de Google. Incluye una opción --failures-only que debe hacer lo que desee.

Cuestiones relacionadas