繁体   English   中英

如何测试仅返回系统值的API?

[英]How to test API that just returns system values?

比方说我们有一个例行程序

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有何看法?

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

您应该测试您依赖或在公共API中承诺的所有内容(还隐藏所有未测试的内容)。

如果此方法是您的库的一部分,则应确保它能够完成文档中所述的所有操作。 将寄存器设置为特定值,并验证函数是否正确返回它们。

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

我不会完全跳过测试。 该文档正确指定了特定于平台的组件。 如果代码需要某种奇怪的体系结构上缺少的特定内容,那么如果测试失败会很好。 对于更多奇特体系结构的用户来说,它也可以作为一个不错的模板来添加自己的测试,从而使代码整体上更加健壮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM