【发布时间】:2009-07-22 14:55:18
【问题描述】:
我目前使用的产品是一个用 C++ 编写的 Windows 服务,今后所有新功能都将为其编写单元测试。但这产生了一个有趣的问题(至少对我而言),我们为各种事情做了很多 Win32 调用并做出相应的行为,因此为了完成单元测试,最好测试各种输出,而不仅仅是当前系统状态。
我的问题是模拟 Win32 调用结果的最佳方法是什么?我想过两种不同的方法:
1) 将所有使用的 Win32 调用放入函数指针中,并将它们传递给使用它们的函数或类(取决于它们被命中的次数),并使用它来获取模拟结果。
2) 到处都有很多#ifdef UNITTEST,如果它正在调用我自己的特殊方法,或者如果没有调用普通方法。
我是不是完全偏离了基础,还是缺少基本知识?
【问题讨论】:
-
如果您需要参数来修改 UnitTestMessageBox 的行为怎么办? #ifdef UNITTEST #undef MessageBox #define MessageBox UnitTestMessageBox #endif
标签: c unit-testing winapi mocking