jas*_*ams 47 xcode code-coverage objective-c ios
在Xcode 5中启用代码覆盖率运行我的测试目标时,我在构建输出中收到以下几条消息:
profiling:invalid arc tag (0x...)
Run Code Online (Sandbox Code Playgroud)
它似乎不会影响测试,因为它们成功完成,并且GCDA覆盖文件也按预期生成.
知道消息的含义,或者如何抑制消息/修复问题,因为它们会使构建输出混乱,并且很难找到测试用例结果.
jst*_*nco 50
很可能这是因为构建工具无法将当前结果合并到现有的.gcda coverage文件中.正如Dave Meehan在这里指出的那样,有一种通过清理产品构建文件夹来处理这种情况的蛮力方法,但是一种不那么难的核心方法是从生成它们的目标中删除.gcda文件(对我来说,只是测试目标)作为构建过程的一部分.Dave包含一个示例脚本,作为构建阶段包含在内 - 或者,在项目根目录下手动执行:
find . -name "*.gcda" -print0 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
ske*_*ell 31
对于那里的Xcode 7用户,你可能想知道为什么你的单元测试在收到这样的消息后崩溃了.我发现的解决方案是你需要确保构建流程中涉及的所有可能目标(包括所有库)都应该将这两个构建设置设置为NO:
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
Run Code Online (Sandbox Code Playgroud)
如果您在构建设置中搜索"代码生成"部分,您会发现这些代码为"生成测试覆盖率文件"和"仪器程序流程".
如需进一步参考,请参阅https://developer.apple.com/library/ios/qa/qa1514/_index.html
| 归档时间: |
|
| 查看次数: |
13168 次 |
| 最近记录: |