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

时间:2019-01-10 18:15:00

标签: c++ boost googletest boost-test

我以前曾使用过Google Test / GTest,我确信它允许您的文本夹具类继承您正在测试的类,因此它可以访问被测试类的受保护方法(而无需公开展示)。

我正在尝试通过Boost单元测试实现相同的目的,但是它不允许我访问受保护的方法(即使我的测试治具类继承自被测试的类)。

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

1 个答案:

答案 0 :(得分:1)

BOOST_FIXTURE_TEST_CASE的测试功能是从固定装置继承的结构的一部分。它的公共成员和受保护成员可以被视为局部变量。扔掉一个继承自您要测试的类的固定装置,您就可以开始比赛了:

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());
}