通过上面介绍的接口,可以封装一个GetCurTestInfo的函数,并在用例body后的清理操作TearDown()中调用,当用例失败时就可以做自己想做的事情了,实现代码如下:
1 /** 2 * @brief 获取当前用例执行信息 3 * @param case_name 保存用例集名称 4 * @param name 保存用例名称 5 * @param [IN]len 缓冲区长度 6 * @return bool 用例是否成功 7 */ 8 bool GetCurTestInfo(char* case_name, char* name, const size_t len) 9 { 10 const ::testing::TestInfo* curTest = ::testing::UnitTest::GetInstance()->current_test_info(); 11 const char* cur_case_name = curTest->test_case_name(); 12 const char* cur_name = curTest->name(); 13 strcpy_s(case_name, len, cur_case_name); 14 strcpy_s(name, len, cur_name); 15 const ::testing::TestResult* result = curTest->result(); 16 return result->Passed(); 17 }
1 virtual void TearDown() 2 { 3 char casename[200] = {0}; 4 char name[200] = {0}; 5 if(!GetCurTestInfo(casename, name, 200)) 6 { 7 …… // do something 8 } 9 }
除了上述接口外,gtest还提供了很多获取用例相关信息的接口