【发布时间】:2018-03-16 01:50:38
【问题描述】:
documentation 声明:
如果函数失败,返回值为零。获得扩展错误 信息,调用GetLastError。
但它没有给出任何函数如何可能失败的示例。
对于单元测试,我需要可靠地创建使EnumProcesses() 失败的情况。
【问题讨论】:
-
对于单元测试,您可能应该有一种方法来删除获取进程的方法。
-
对于托管代码,曾经有 Moles/Pex(现在的 Microsoft Fakes),用于提供系统服务的替代品,以展示可重现的行为。不过,我不知道有任何此类原生代码框架,但我会花时间研究这些框架的可用性。
-
每个 winapi 函数都可能失败。没有例外规范。它几乎从来都不是什么好东西,对于 EnumProcesses 肯定不会,并且只需要测试应用程序是否成功终止并出现异常。
-
@HansPassant 当然可以,但问题是如何创建使
EnumProcesses失败的条件? -
你将不得不对操作系统做一些难以形容的事情。一定要关注如何它报告失败,你所需要的只是一个false返回值。 #ifdef 可以做的事情。
标签: c++ unit-testing winapi