【发布时间】:2018-04-20 22:52:20
【问题描述】:
我正在尝试为函数编写单元测试。这个函数是静态的,并且在一个文件中,比如 FileA.cpp,虽然它不是任何类的成员。
在 FileA.cpp 中还定义了一个静态变量。 在另一个文件中说 FileB.cpp 有这个静态变量的用法。
我现有的单元测试代码没有引用 FileA.cpp,因为到目前为止还没有对其功能进行测试。然而,它确实测试了 FileB.cpp 的功能。为了方便这个静态变量引用,在单元测试项目的 Main.cpp 中定义了一个假变量(我使用的是 GoogleTest 框架)。
但现在我需要测试 FileA.cpp。当我在 Makefile 中添加文件时,我收到此静态变量的“多重定义”错误。
我尝试在 Production 和 Testing 项目中分别引入一个同名的 .h 文件(比如 GlobalVars.h)并将变量移到那里,但它似乎并没有欺骗编译器。测试项目中的 FileA.cpp 实例仍然尝试访问生产代码的 GlobalVars.h,我再次得到双重定义。
有什么想法可以打破这种依赖关系吗?
【问题讨论】:
标签: c++ unit-testing dependencies refactoring legacy-code