Google 测试夹具中的变量
Variables in Google Test Fixtures
为什么TEST_F可以在不使用任何作用域的情况下访问class
中的成员变量?例如,
class ABC : public ::testing::Test
{
protected:
int a;
int b;
void SetUp()
{
a = 1;
b = 1;
}
virtual void TearDown()
{
}
};
TEST_F(ABC, Test123)
{
ASSERT_TRUE(a == b);
}
为什么可以直接访问a
和b
,而不是使用ABC::a
或ABC::b
? fixture 是否为 class ABC
创建了一个变量?如果是这样,它应该是 ASSERT_TRUE(abc.a == abc.b);
而不是 ASSERT_TRUE(a == b);
吗?
TEST_F 是一个宏,它定义了一个新的 class publicly 继承自第一个参数(在本例中为 'ABC')。因此它可以访问测试夹具 class.
的所有 public 和受保护成员
您可以在头文件中检查此宏的源代码,以更好地了解它的作用。
TEST_F macro,如果您遵循宏路径,它会引导您...
GTEST_TEST_ macro
为什么TEST_F可以在不使用任何作用域的情况下访问class
中的成员变量?例如,
class ABC : public ::testing::Test
{
protected:
int a;
int b;
void SetUp()
{
a = 1;
b = 1;
}
virtual void TearDown()
{
}
};
TEST_F(ABC, Test123)
{
ASSERT_TRUE(a == b);
}
为什么可以直接访问a
和b
,而不是使用ABC::a
或ABC::b
? fixture 是否为 class ABC
创建了一个变量?如果是这样,它应该是 ASSERT_TRUE(abc.a == abc.b);
而不是 ASSERT_TRUE(a == b);
吗?
TEST_F 是一个宏,它定义了一个新的 class publicly 继承自第一个参数(在本例中为 'ABC')。因此它可以访问测试夹具 class.
的所有 public 和受保护成员您可以在头文件中检查此宏的源代码,以更好地了解它的作用。
TEST_F macro,如果您遵循宏路径,它会引导您... GTEST_TEST_ macro