C++ 记录谷歌测试

C++ 记录谷歌测试,c++,doxygen,c-preprocessor,googletest,C++,Doxygen,C Preprocessor,Googletest,我最近开始使用谷歌测试来帮助我完成测试程序。它工作得很好,但现在我的测试用例正在增长 #包括 测试(MyTest,FirstTest){ //东西 }; 测试(MyTest,SecondTest){ //东西 }; 测试(我的测试,第三次测试){ //东西 }; int main(int argc,char*argv[]){ ::测试::InitGoogleTest(&argc,argv); 返回运行所有测试(); }; 我想为我的所有测试创建一个漂亮的自动生成的文档,该文档将与我的程序文档分

我最近开始使用谷歌测试来帮助我完成测试程序。它工作得很好,但现在我的测试用例正在增长

#包括
测试(MyTest,FirstTest){
//东西
};
测试(MyTest,SecondTest){
//东西
};
测试(我的测试,第三次测试){
//东西
};
int main(int argc,char*argv[]){
::测试::InitGoogleTest(&argc,argv);
返回运行所有测试();
};
我想为我的所有测试创建一个漂亮的自动生成的文档,该文档将与我的程序文档分开。为此,我通常使用doxygen,但google测试使用宏,目前还不清楚doxygen如何处理这个问题。更确切地说,我们有

#定义测试(测试用例名称、测试名称)\
GTEST_测试(测试用例名称、测试名称、\
::测试::测试,::测试::内部::GetTestTypeId()
我试过了

/**
*@def测试(MyTest,FirstTest)
*@简要介绍我的第一次测试
*/
测试(MyTest,FirstTest){
//东西
};

但是它不会在doxygen上生成任何输出…

您正在使用的
@def
,但这是用于宏定义的命令。该命令后面没有
#define
语句,因此Doxygen会忽略它。函数的Doxygen命令是
@fn
,因此请改用该命令


还请记住,要让Doxygen记录全局函数,还需要记录所附文件。

显然,您的问题刚刚得到Rob Kennedy的回答。但无论如何,我想提供一种完全不同的方法

我使用gtest的
RecordProperty()
方法在测试日志XML中创建一个额外的
description
属性,并将测试方法正在执行的操作的简短描述作为字符串文本传递给它。我创建了一个名为
TEST\u DESCRIPTION
的小宏,该宏在任何测试用例中都应该作为第一个语句调用:

#define TEST_DESCRIPTION(desc) RecordProperty("description", desc)

TEST(MyTest, SecondTest) {
    TEST_DESCRIPTION("This test does 'stuff'");
    // stuff
};
此外,我还有一个简单的XSLT转换,它从XML测试日志输出创建一个HTML测试报告,并显示这个
@description
属性

此方法的一个缺点是,对于禁用的测试,“描述”属性不会出现,因为
RecordProperty()
当然不会对这些测试执行

整个事情都是在我的老板要求提供单元测试的测试用例描述时发明的,我不想用单独的工具来描述这些(例如,我们有用于需求分析的Polarion,您也可以在那里描述测试场景),因为这可能很快变得不一致


但是,doxygen可能会提供额外的好处,因为它能够显示来自您的测试方法的调用引用。

很好的方法。使用gtest进行测试通常涉及测试类,这是doxygen在该特定情况下对我有用的主要原因。请注意,如果注释位于正在记录的实体前面,则根本不需要def或fn命令。您是否介意编写一个适当的示例来说明应该如何进行?