2011-07-07 8 views

Odpowiedz

5

Istnieją dwa sposoby osiągnięcia tego.

Pierwszy to napisać własny detektor zdarzeń:

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

Innym sposobem jest filtrowanie wpisze googletest detektor odbiera.

Do tego approache usunąć bieżący detektor zdarzeń i wymieniać je z własnej

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

gdzie FailurePrinter jest własne klasy detektor zdarzeń.

Ta klasa powinna wyglądać następująco

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; 
}; 

Teraz trzeba zaimplementować wszystkie metody.

Jeśli podoba Ci się sposób, w jaki detektor zdarzeń google odbierze coś, wystarczy przekazać połączenie do _listener.

Lub możesz zmodyfikować wynik. Na przykład:

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

wydrukuje tylko Testfailures.

0

Napisałem Google Test Pretty Printer, słuchacza testowego/ładną drukarkę do testu Google, aby zapewnić czystsze i bardziej atrakcyjne wyniki konsoli dla programów testowych Google. Zawiera opcję --failures-only, która powinna zrobić to, co chcesz.