c++ - 使用 -fno-access-control 进行单元测试

标签 c++ unit-testing gcc

我见过很多在单元测试时访问私有(private)变量的疯狂方法。我见过的最令人兴奋的是 #define private public

但是,我从未见过有人建议在编译器级别关闭私有(private)变量。我一直以为你做不到。我曾向许多开发人员提示说,如果您可以只告诉编译器为这个文件后退,单元测试会容易得多。

然后我偶然发现了 -fno-access-control GCC 编译器选项。这显然是单元测试的完美方式。你的原始源文件没有被修改,没有注入(inject) friend 只是为了单元测试,没有用奇怪的预处理器魔法重新编译。编译单元测试时,只需轻按“无访问控制”开关即可。

我错过了什么吗?这是我希望的单元测试 Elixir 吗?

我看到的唯一缺点是该技术特定于 GCC 的性质。但是,我假设 MSVS 有一个类似的标志。

最佳答案

我认为单元测试不需要访问私有(private)成员。

一般来说,单元测试旨在测试类的接口(interface),而不是内部实现。那样的话,只有在接口(interface)被破坏的情况下,对内部结构的更改才会破坏测试。

看看我的 answer类似的问题,以及随后的讨论。可以肯定的是,这是一个有争议的话题,但这是我的 0.02 美元。

关于c++ - 使用 -fno-access-control 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860923/

相关文章:

c++ - 使用 QNetworkReply 如何发布文件然后从服务器接收转换后的文件?

c++ - 使用 C++ 只读取具有格式化和未格式化数据的文件中的格式化数据

c# - 单元测试 (C#)

c++ - 将 char 数组传递给函数模板,以便 gcc 可以知道它是文字?

c++ - 未定义引用 [USRP] [UHD]

c++ - 模拟 AVX-512 掩码指令

c++ - TTF_RenderUTF8_Shaded 无效读取

c++ - 获取类成员变量的大小(无需运行代码)

Android InstrumentationTestCase getFilesDir() 返回 null

.net - 多线程应用程序中的单元测试事件