首页 > 解决方案 > 对更改私有成员变量的函数进行单元测试

问题描述

我有以下课程:

class foo {
    public:
        foo() : the_count(0) {}
        ~foo() = default;

        void add_one_to_count() { the_count++; };

    private:
        int the_count;
};

在这个类中,一个公共函数改变一个私有成员变量。我怎样才能对它进行单元测试,以便在the_count不创建 getter 函数的情况下验证它的值是什么?

标签: c++unit-testinggoogletest

解决方案


上面的讨论可以恢复为:

  • 同样的老问题:如何测试私有函数/私有成员。相同的旧答案:基本上,您不必这样做。如果你真的需要它,它可能会说私有函数应该在单独的可测试代码中解耦。

拥有可测试的代码应该是初始设计的一部分。可测试代码:

  • 尽可能无国籍

  • 禁止无效功能。

  • 避免副作用。

因为真正的程序经常需要有状态的东西和副作用,所以合适的方法是开发无状态的 - 没有副作用的功能,核心业务(算法,逻辑)已经完成,并通过单元测试对其进行测试。然后可以使用集成测试来测试使用单元测试逻辑的副作用和状态完整代码。


推荐阅读