【发布时间】:2011-12-15 14:53:53
【问题描述】:
所以我正在对一些代码进行自动化测试。有一个从名为“cmdLineProc”的命令行运行的可执行文件。
我正在用 C++ 编写我的测试程序(不使用 Python,或者因为我们使用的 API 可以加快这些测试的速度)。 命令行参数在测试中作为字符串生成,并传递给使用 CreateProcess 运行 cmdLineProc 的函数。 这工作正常。我可以调用 cmdLineProc 并且它可以工作并且测试通过了。但只有在没有返回错误的情况下。
在测试时,我需要检查事情是否在应该失败的时候也失败了。在这些情况下,cmdLineProc 返回一个错误值。
因此,如果我在命令行上运行 cmdLineProc 并使用将使其失败的参数,我会收到一条消息“错误,失败:-3”,其中 -3 是错误代码。 但是当我使用 CreateProcess 通过 C++ 测试运行它时,我遇到了一个问题。 CreateProcess 只是失败并返回-1,表示它失败的代码。它没有说明失败的原因。 我使用 GetExitCodeProcess 来获取 cmdLineProc 的终止状态。
任何人都知道是否有可能从 cmdLineProc 使用此方法返回的错误值返回?如果没有,有人知道我将如何实现这一点吗?
【问题讨论】:
-
GetLastError 对我不起作用。它只返回 0。这是我第一次使用这个东西,但我尝试将 GetLastError() 放在代码中的几个不同位置,但每次它只返回 0。
-
对不起。我以为
CreateProcess失败了,但是如果它返回非零值(-1)则意味着成功。 -
看到您应该解析
cmdLineProc写入标准输出的内容 -
我不明白为什么
cmdLineProc不返回-3而不是-1 -
CreateProcess的返回类型是BOOL。那不可能是-1,某处存在更大的问题。邮政编码。
标签: c++ winapi createprocess