最佳答案
我想使用 GoogleTest 测试一些私有方法。
class Foo
{
private:
int bar(...)
}
GoogleTest 提供了一些实现这一点的方法。
选择一
FRIEND _ TEST:
class Foo
{
private:
FRIEND_TEST(Foo, barReturnsZero);
int bar(...);
}
TEST(Foo, barReturnsZero)
{
Foo foo;
EXPECT_EQ(foo.bar(...), 0);
}
这意味着在生产源文件中包含“ gtest/gtest.h”。
选择二
声明一个 测试夹具作为类的朋友,并在 fixture 中定义访问器:
class Foo
{
friend class FooTest;
private:
int bar(...);
}
class FooTest : public ::testing::Test
{
protected:
int bar(...) { foo.bar(...); }
private:
Foo foo;
}
TEST_F(FooTest, barReturnsZero)
{
EXPECT_EQ(bar(...), 0);
}
选项3
皮普尔成语.
详情请浏览: 谷歌测试: 高级指南。
还有其他方法来测试私有方法吗? 每种方法的优缺点是什么?