提升单元测试夹具继承测试 class,以访问受保护的方法?

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

我之前曾与 Google Test/GTest 合作过,我确信它允许你的文本夹具 class 继承你正在测试的 class,所以它可以访问正在测试的 class 的受保护方法(无需将它们公开为 public)。

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

有没有办法让测试夹具 classes 访问正在 Boost 测试中测试的 classes 的受保护方法?如果不是,公开 private/protected 单元测试方法的最佳方法是什么?

BOOST_FIXTURE_TEST_CASE 中的测试函数是从夹具继承的结构的一部分。它是 public 并且受保护的成员可以像局部变量一样对待。投入一个继承自您要测试的 class 的夹具,然后您就可以开始比赛了:

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