如何为gtest的xml报告增加自定义属性

gtest 入门推荐两篇文档:

http://www.ibm.com/developerworks/cn/linux/l-cn-cppunittest/

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html


在使用gtest做C++单元测试的时候,经常需要对gtest生成的xml报告进行封装,但gtest默认输出的testcase元素只有如下的属性:

    <testcase name="One" status="run" time="1.355" classname="Hello" />

其中 name 值不能使用中文,classname是这个testcase的类名,也不能包含太多的信息,要生成一份详细的报告,必须给这个testcase元素增加新属性值才行。

查看gtest源码,UnitTest类其实有一个方法:RecordProperty,可以为xml增加一个自定义的属性,用法:


TEST_F(Hello, One) {
	this->RecordProperty("desc","abc");
}

当然为更方便一些,建议这里定义成一个宏:

#define CASE_DESC(desc) this->RecordProperty("desc",desc);
TEST_F(Hello, One) {
       CASE_DESC("abc");
}

这样在gtest生成的xml报告中就会多一个属性desc

    <testcase name="One" status="run" time="1.355" classname="Hello" desc="abc" />


但这里如果想要在desc中加入中文将在xml中不能显示(直接过滤掉了),

翻看gtest.cc,在代码中作如下修改就可以:

		  m << ch;
/*把下面这段注释掉,改为上面一句,可以解决中文被过滤的问题^^
        if (IsValidXmlCharacter(ch)) {
          if (is_attribute && IsNormalizableWhitespace(ch))
            m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
              << ";";
          else
            m << ch;
        }*/



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值