【发布时间】:2013-02-07 21:26:25
【问题描述】:
我已经实现了一个在底层使用 C 函数的外观模式,我想对其进行正确测试。
我并不能真正控制这些 C 函数。它们在标头中实现。现在我#ifdef 在生产中使用真正的头文件,在测试中使用我的模拟头文件。 C中有没有办法通过覆盖C函数地址或其他方式在运行时交换C函数?我想去掉我代码中的#ifdef。
【问题讨论】:
-
看看微软的弯路。你可能会钩住他们
-
查看函数指针。
-
#ifdef 有什么问题?
-
@RomanSaveljev
#ifdef适用于编译时,而不是运行时。 -
如果您要模拟测试工具中的函数,那么在测试 C 代码时这是一个非常好的方法。没有必要让它变得更复杂。最好您只希望在测试代码中使用#ifdefs,而不是在真正的标头/生产代码中。
标签: c unit-testing mocking facade