如何为gtest的xml报告增加自定义属性
发布时间:2020-12-16 06:00:26 所属栏目:百科 来源:网络整理
导读: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默认输出的
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" />
翻看gtest.cc,在代码中作如下修改就可以: m << ch; /*把下面这段注释掉,改为上面一句,可以解决中文被过滤的问题^^ if (IsValidXmlCharacter(ch)) { if (is_attribute && IsNormalizableWhitespace(ch)) m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch)) << ";"; else m << ch; }*/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |