如何将测试夹具传递给 C++ GTest 中的辅助函数

How to pass a test fixture to a helper function in C++ GTest

我的测试装置中有一个受保护的静态方法,我希望从辅助函数调用,而不是从单元测试函数本身调用。

class Fixture
{
  ...
protected:
    static void fixture_func( int foo );
};

void helper_func( int bar ) {
  Fixture::fixture_func( bar );
}

TEST_F( Fixture, example_test ) {
  fixture_func( 0 );  //Line 1: This is how you would normally call the method
  
  helper_func( 0 );  //Line 2: This is how I need to call the method
}

当我尝试第 2 行时,我显然得到一个错误,该方法是 'inaccessible',因为它是 fixture 中的受保护方法。我怎样才能以某种方式将测试夹具传递给 helper_func,或者将 fixture_func 置于 helper_func 的范围内?

如果您想知道,简单地从单元测试本身调用 fixture func 不是一种选择,因为我正在设计一个旨在简化 fixture_func 用于特定目的的测试框架。我也没有能力对 fixture.

进行重大更改

不能从class外部调用protectedprivate方法,不管那个方法是static 或者如果调用函数是 C-style 一个。

无论如何,在 fixture_func:

之前,您需要 class 范围 Fixture::
void helper_func( int bar ) {
  Fixture::fixture_func( bar );
}

你需要通过某种方式让fixture_func变成public,你可以试试:

class FixtureExpanded : public Fixture { };
void helper_func( int bar ) {
  FixtureExpanded::fixture_func( bar );
}