之前,我曾使用过Google Test / GTest,可以肯定的是,您的文本夹具类可以继承您正在测试的类,因此它可以访问被测试类的 protected 方法(而无需公开暴露给他们) )。
我正在尝试通过Boost单元测试实现相同的目的,但是它不允许我访问 protected 方法(即使我的测试治具类继承自被测试的类)。
测试夹具类是否可以访问在Boost Test中测试的类的 protected 方法?如果没有,那么公开私有(private)/ protected 方法进行单元测试的最佳方法是什么?
最佳答案
BOOST_FIXTURE_TEST_CASE的测试函数是从灯具继承的结构的一部分。它的公共(public)成员和 protected 成员可以被视为局部变量。抛出一个继承自您要测试的类的固定装置,您便可以开始比赛了:
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());
}
关于c++ - Boost单元测试夹具继承了测试类,可以访问 protected 方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54134664/