如何使用Google Test的案例方法提取测试名称?

时间:2019-04-12 11:24:10

标签: googletest

我有一堆测试用例,每个用例都会输出一个文件。我希望每个文件都以相应的案例名称命名,这样结果文件就不会互相干扰。有什么办法可以通过编程做到这一点?

我现在拥有的(讨厌重复案例名称,因为它可以更改:

TEST_F(Foo, Bar)
{
  ...
  std::ofstream("Bar.bat");
  ...
}

我想要什么:

TEST_F(Foo, Bar)
{
  ...
  std::ofstream(magic_method_to_get_case_name() + ".dat");
  ...
}

1 个答案:

答案 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类。