我有一堆测试用例,每个用例都会输出一个文件。我希望每个文件都以相应的案例名称命名,这样结果文件就不会互相干扰。有什么办法可以通过编程做到这一点?
我现在拥有的(讨厌重复案例名称,因为它可以更改:
TEST_F(Foo, Bar)
{
...
std::ofstream("Bar.bat");
...
}
我想要什么:
TEST_F(Foo, Bar)
{
...
std::ofstream(magic_method_to_get_case_name() + ".dat");
...
}
答案 0 :(得分:0)
只需了解如何做到这一点即可。如果有人想知道,我会在这里分享。
看起来像GTEST_TEST_宏会将名称信息保留在私有静态变量中:
#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\
class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
public:\
GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
private:\
virtual void TestBody();\
static ::testing::TestInfo* const test_info_;\
GTEST_DISALLOW_COPY_AND_ASSIGN_(\
GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
};\
因此,在任何情况下,代码都可以通过它获取案例名称:
test_info_->name()
案例名称不是唯一可以获取的信息-请检查gtest.h中的TestInfo类。