Boost单元测试夹具继承测试类,是否可以访问受保护的方法

Boost unit test fixture inheriting test class, to have access to protected methods?

本文关键字:访问 受保护 方法 是否 夹具 单元测试 继承 测试类 Boost      更新时间:2023-10-16

我以前使用过Google Test/GTest,我确信它允许您的文本fixture类继承您正在测试的类,这样它就可以访问被测试类的受保护方法(而不需要将它们公开为公共方法)。

我正试图用Boost单元测试实现同样的事情,但它不允许我访问受保护的方法(即使我的测试fixture类继承自被测试的类)。

有没有一种方法可以让测试夹具类访问Boost测试中测试的类的受保护方法?如果没有,那么为单元测试公开私有/受保护方法的最佳方式是什么?

BOOST_FIXTURE_test_CASE中的测试函数是从FIXTURE继承的结构的一部分。它是公共的,受保护的成员可以像局部变量一样对待。加入一个从你想要测试的类继承的fixture,你就可以开始比赛了:

class TestClass {
public:
TestClass() {}
protected:
bool Foo() { return true; }
};
class MyFixture : public TestClass {
public:
MyFixture() { bar = 1; }
protected:
int bar;
};
BOOST_FIXTURE_TEST_CASE(MyTest, MyFixture) {
BOOST_TEST(bar == 1);
BOOST_TEST(Foo());
}