我最近开始使用谷歌测试来帮助我进行测试。它运行良好,但现在我的测试用例正在增长......
#include <gtest/gtest.h>
TEST(MyTest, FirstTest) {
// stuff
};
TEST(MyTest, SecondTest) {
// stuff
};
TEST(MyTest, ThirdTest) {
// stuff
};
int main(int argc, char* argv[]) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
};
我想为我所有的测试创建一个很好的自动生成的文档,它将与我的程序文档分开。为此,我通常使用 doxygen,但谷歌测试使用宏,目前尚不清楚 doxygen 如何处理它。更准确地说,我们有
#define TEST(test_case_name, test_name)\
GTEST_TEST_(test_case_name, test_name, \
::testing::Test, ::testing::internal::GetTestTypeId())
我试过了
/**
* @def TEST(MyTest, FirstTest)
* @brief My first test
*/
TEST(MyTest, FirstTest) {
// stuff
};
但是它不会在 doxygen 上产生任何输出...
最佳答案
显然您的问题刚刚由 Rob Kennedy 的回答回答。但尽管如此,我还是想提供一种完全不同的方法。
我使用 gtest 的 RecordProperty()
方法在测试日志 XML 中创建一个额外的 description
属性,并将测试方法的简短描述传递给它做为字符串文字。我创建了一个名为 TEST_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 可以提供额外的好处,因为它能够显示来自您的测试方法的调用引用。
关于c++ - 记录谷歌测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059187/