Tag: 测试覆盖率

使用Slather将代码覆盖范围添加到Zendesk的iOS SDK版本中

测试覆盖范围的扩大是Zendesk Mobile SDK团队的一项持续任务。 有什么比在每次拉动请求中都提示的更好的方法来帮助实现这一点。 让我们知道我们是否正在朝着目标迈进。 早在2014年,我们的iOS SDK就开始使用Xcode 5进行工作。那时,它是一个静态库。 从那以后,它经历了许多更改和Xcode版本。 如今,这是一个由等量的Swift和Objective C编写的动态框架。Xcode项目会迅速收集灰尘,而将新工具集成到旧项目中的工作很少能顺利进行。 我们最近将危险集成到我们的项目中。 危险使代码检查的某些方面自动化。 我们一直将它用于简单的任务,例如警告我们代码中遗留的待办事项或格式错误的提交消息。 设置既简单又易于使用,它具有大量可用的插件。 Slather生成测试覆盖率报告,并旨在加入CI。 还有一个危险插件。 将其添加到我们的项目看起来很简单。 gem install danger-slather 在我们要报告测试覆盖率的方案的危险文件配置slather上添加一行。 添加另一行以显示输出。 推送至GitHub,等待Travis完成。 错误:无法加载覆盖率。 找不到覆盖率数据。 总覆盖率:NaN% 无论如何,这似乎太不可思议了。 错误消息很清楚。 我们要么没有生成代码覆盖率数据,要么Slather无法找到它。 首先,我们需要检查是否正在生成覆盖率数据。 这是在要覆盖数据的方案的测试设置中完成的。 另外,可以将enableCodeCoverage传递给xcodebuild。 在这一点上,我们假设coverage数据与构建输出位于同一位置。 我们正在将OBJROOT传递给xcodebuild,并且可以在那里看到构建输出。 我们已经将Slather配置为在同一目录中查找二进制文件以对其进行覆盖。 我们仍然No coverage directory found从Slather No coverage directory found 。 我们使用bundle show slather slather查看了Slather的代码,发现它正在运行: build_command =“ xcodebuild#{projectOrWorkspaceArgument}#{schemeArgument} -showBuildSettings 此命令获取方案中包含的所有信息。 OBJROOT不会选择将OBJROOT或任何其他环境变量传递给xcodebuild。 […]