如何将测试夹具传递给 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外部调用protected
或private
方法,不管那个方法是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 );
}
我的测试装置中有一个受保护的静态方法,我希望从辅助函数调用,而不是从单元测试函数本身调用。
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外部调用protected
或private
方法,不管那个方法是static
或者如果调用函数是 C-style 一个。
无论如何,在 fixture_func
:
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 );
}