zeerd's blog     Article     Search     About     Tags     Pebble     Feed

闲来生雅趣,无事乐逍遥。对窗相望雪,一盏茶香飘。

测试程序端导出gtest结果到第三方

#gtest


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