c++ - 如何测试只返回系统值的API?

标签 c++ unit-testing testing libunwind

比方说我们有一个例程

int unw_getcontext(unw_context_t *ucp)

The unw_getcontext() routine initializes the context structure pointed to by ucp with the machine-state of the call-site. The exact set of registers stored by unw_getcontext() is platform-specific

对于这样的例程,单元测试必须是什么?当然,我可以使用一些系统调用来获取 CPU 寄存器和类似的东西,然后将其与例程返回的内容进行比较。但是对于单元测试来说,这似乎是很多工作。测试理论对测试此类 API 有何看法?

最佳答案

我会说这更多地取决于上下文。

您应该测试您依赖的所有内容或您在公共(public) API 中 promise 的所有内容(同时隐藏所有未测试的内容)。

如果此方法是您的库的一部分,您应该确保它执行您在文档中所说的一切。也就是将寄存器设置为特定值并验证函数是否正确返回它们。

如果这是内部的并且您只依赖于它的一部分,那么只测试该部分并修改文档以说明其他内容未经测试且不应使用(除非正确测试)。假设您只需要它来获取指令指针,这样您就可以从代码的其他部分跳回,然后只测试这部分行为。

我不会完全跳过测试。该文档正确地指定了它有一些特定于平台的组件。如果代码需要某些奇怪的体系结构中缺少的特定内容,那么如果有测试失败,那就太好了。它还可以作为一个很好的模板,供使用更多异国情调的架构的用户添加他们自己的测试,从而使代码整体更健壮。

关于c++ - 如何测试只返回系统值的API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55136156/

相关文章:

c++ - 用 C 编写 Linux 服务器的最佳方法(phtreads、select 或 fork?)

c++ - 具有数字部分的字符序列

c++ - 双图插入问题

android - 是否可以从 MonkeyRunner 脚本调用 Monkey 测试

performance - 打开 Word 文档时的 Visual Studio 性能测试

c++ - 一次读取完整文件是个好主意吗?

java - java 中的单元测试 Web 应用程序?

javascript - 如何测试内部函数是否已从导入函数调用? (与 Jest.js)

laravel - 使用 TDD 构建 Laravel 应用程序 - 第 4 集,InvalidArgumentException : Unable to locate factory with name [default] [App\Project]

javascript - 如何在 Jest 中模拟/监视 useState 钩子(Hook)?