2011-07-07 33 views

回答

5

有兩種方法可以實現這一點。

第一個是寫自己的事件偵聽器:

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

另一種方式是過濾googletest事件偵聽器接收輸入。

對於這個approache刪除當前事件偵聽器和與之交換自己

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

其中FailurePrinter是你自己的事件監聽器類。

這個類應該是這樣的

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

現在你必須實現所有方法。

如果您喜歡googles事件偵聽器打印某些內容的方式,只需將調用委託給_listener。

或者您可以修改結果。 例如:

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

將只打印Testfailures。

0

我寫了Google Test Pretty Printer,Google測試的測試監聽器/漂亮打印機,爲Google測試程序提供更乾淨,更具吸引力的控制檯輸出。它包括一個--failures-only選項,應該做你想做的。