测试程序端导出gtest结果到第三方
Charles Chan @ 2016-09-14 #gtest @Program
Contents:
gtest是目前广为使用的测试框架之一。但是,有些时候,处于客户要求或者其他一些目的,我们需要将gtest的结果在运行态直接导出。
下面的代码给出一种可行的导出方案。这段代码需要在TearDown中被执行。
void GTEST_REPORT(void)
{
const ::testing::TestInfo* info
= ::testing::UnitTest::GetInstance()->current_test_info();
const ::testing::TestResult& result = *info->result();
char *name = NULL;
asprintf(&name, "%s.%s", info->test_case_name(), info->name());
if(name != NULL) {
std::string errors = "如下条目NG:\n";
int i, max = result.total_part_count();
for(i=0;i<max;i++) {
char p[1024];
snprintf(p, 1024,
"%s(%d)\n",
::basename(result.GetTestPartResult(i).file_name()),
result.GetTestPartResult(i).line_number());
errors += p;
}
if(HasFailure()) {
printf("%s\n", errors.c_str());
}
else {
printf("与期望结果一致");
}
free(name);
}
}