例如,我有一个包含函数 A、B 和 C 的 C 文件。A 是我正在测试的函数(单元测试)。A() 调用 B() 和 C()。我不想制作 B() 和 C() 存根而不是真正的函数。由于 B() 和 C() 在同一个 C 文件中定义,我应该“-rename”以使它们成为存根(参考https://www-01.ibm.com/support/docview.wss?uid=swg21125279) . 这很好用,我得到了测试报告和覆盖率报告。
现在我想在没有任何代码插入的情况下运行相同的测试(即非仪器)。为此,我将 C 文件属性“instrumented”更改为“No”,并从“Build Settings”中取消选中“Code Coverage”选项。构建节点时,我收到错误说 B() 和 C() 重新定义。在上面的链接中指出,“-rename”不适用于非仪器。对于非仪表化,这种情况下的解决方案是什么?
我做的一件事是从节点中排除 C 文件(通过交叉标记它)并将文件包含在 PTU 本身中。测试执行得很好,但是我不确定代码插入是否发生。我相信没有发生代码插入,因为我没有在“构建设置”中启用“代码覆盖率”