加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

生成gcda文件以使用Jenkins查看IOS中XCTests的代码覆盖率

发布时间:2020-12-14 19:19:33 所属栏目:百科 来源:网络整理
导读:我想通过在生成的gcda文件上运行gcovr来查看代码覆盖率. Jenkins似乎将生成的gcda文件放在Users /../ Library / developer / Xcode / DerivedData /../../../ i386中.我希望它们在Users / Shared / Jenkins / workspace /../ build / example.build / Debug-
我想通过在生成的gcda文件上运行gcovr来查看代码覆盖率. Jenkins似乎将生成的gcda文件放在Users /../ Library / developer / Xcode / DerivedData /../../../ i386中.我希望它们在Users / Shared / Jenkins / workspace /../ build / example.build / Debug-iphonesimulator / example.build / Objects-normal / i386

当我在本地使用XCode运行我的IOS项目时,它会生成gcda文件,我可以查看我的覆盖范围.
我运行xcode 5,所有测试都是用XCTest创建的.

我已经设置’生成测试覆盖率文件= YES’和’仪器程序流程=是’进行调试和发布,基本上我根据this post完成了所有工作

在Jenkins中,我使用xcode插件来构建.它有两个构建命令.第一个使用目标“example”和配置调试构建.
第二个Xcode构建命令使用目标“ExampleTests”,配置调试,参数“test -destination OS = 7.0,name =”iPhone Retina(4英寸)“和一个方案构建.在输出中我可以看到正在运行的测试并且模拟器从建筑机械上开始.

似乎我在项目设置中遗漏了一些东西,或者没有在jenkins工作中设置正确的东西.对于XCode5,可能只有TEST_AFTER_BUILD = YES之类的东西.

解决方法

正如您所知,.gcda文件放在“错误”目录中.

请执行下列操作:

>在Xcode-Project中选择您的应用程序目标,然后转到“编辑器 – >添加构建阶段 – >添加运行脚本构建阶段”
>将此脚本粘贴到脚本字段中:

echo "Creating derivedDataDirectory file"
echo "${OBJECT_FILE_DIR_normal}/${CURRENT_ARCH}" > ${PROJECT_DIR}/derivedDataDirectory

XCode setup

(这将创建一个带有derivedDataDirectory路径的文件)
>转到您的jenkins项目,单击“添加构建步骤”并选择“执行shell”.
>将此脚本粘贴到“命令”字段中:

#CopyCodeCoverageFile
echo "Start copying code coverage Files"

projectname="[YOUR PROJECTNAME]"

source=$(cat ${WORKSPACE}/$projectname/derivedDataDirectory)

cp -a $source/. ${WORKSPACE}/$projectname/


#CodeCoverage
echo "Start CodeCoverage"

cd ${WORKSPACE}/$projectname

[YOUR PATH TO GCOVR]/gcovr -r /private/tmp/workspace/${JOB_NAME}/$projectname --xml > ${WORKSPACE}/$projectname/test-reports/coverage.xml

插入[您的项目名称]和[您的路径到GCOVR].如果你的PROJECTNAME或目标有
在它的空间,这将导致麻烦!确保所有路径都正确!
>这对我有用,如果你所有的路径都是正确的,它应该适合你.
我正在使用XCode 5在Jenkins上运行XCTests.这应该与您的设置相同.
如果你不使用gcovr为cobertura生成代码覆盖,你可以删除最后一步
在脚本中.如果您遇到gvovr问题,请尝试使用gcovr 3.0代替
3.1!

告诉我,如果某些东西不适合您,或者您找到了更好的解决方案!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读