使用 Xcode 的 Scheme 来跑不同的测试集合

本文讲的是使用 Xcode 的 Scheme 来跑不同的测试集合,


Eigen 这个项目用来介绍测试集再好不过。这个项目在过去3年里,程序包的大小,复杂度和开发人员的数量都不断增加,这是积极的迹象。这种测试模式让我们对这些变化更加顺手。

在我最快的计算机上,我们只需要等一分钟—— Executed 1105 tests, with 1 failure (0 unexpected) in 43.221 (48.201) seconds 来执行整个测试集。我觉得我可以只用 20 秒来完成,所以我研究了如何用 AppCode 处理运行测试,这份指南可以让你基于这个技术轻松的在 Xcode 里搭建起测试集。

我曾经有一个 点子 在通常的测试中去节约时间,基于 代码注入 ,但它并没有完全解决问题,我希望是时间密集型的,当时还没有完全达到要求。

什么是 Schemes?

一个 Xcode scheme 定义了编译集合中的若干 target,编译时的一些设置以及要执行的测试集合。

如果你想的话,你可以自定义若干个 schemes,但是你同一时刻只能运行一个。你可以定义 scheme 是保存于一个工程中,也就是 scheme 是否针对所有包含那个工程的 workspace,否则就只是针对此 workspace。当你选中了一个 scheme,你也就选择了一个运行目标(也就是选择的产品构建的硬件架构)。

引用自 Apple

规划 Scheme

这个测试测试集大概有 50 个单元测试,看起来像是这样:

在你开始之前,你可能会说:“我只想做一些有关 Fairs 的测试”。因为我接下来的几天都将为了这个目标而努力。为了准备开始,我需要创建一个新的 Scheme。当你点击 Xcode 左上角的 Target / Sim 按钮的时候你就会看见这个 schemes。

在我看来,当我们需要创建一个新的 scheme 的时候,Xcode 会 modal(译注:"modal" 是弹出浮窗) 出一个选择窗口,你可以在这个窗口里选择 App 的 target,当你选择好某一个 target 时,你就可以按下 cmd + r 来运行这个 target。

我给它起名叫 "Artsy just for Fairs",因为我是唯一会看到它的人,所以我可以随意命名成我想要的。点击 "OK" 选择它,这个 modal 会被收起。你现在需要回到 target 选择,并且选择 "Edit Schemes ..." 来继续。

做一些修正

现在,在侧栏中点击 "Test",现在你进入了 Schemes 测试编辑器。这将是你接下来要干活的地方。

你需要点击 "+" 来把你的测试 Target 添加到 Scheme

选择并 "Add" 你的 Targets。这样你的 target 就成功的被添加了,然后你需要点击向下箭头让他来显示所有单元测试。

来,给你表演个魔法。按住 alt 并单击蓝色的的标记框把测试 target 关闭。然后不按住 alt 再单击一次。这将会取消选择所有的类,这是所有 Mac 应用都可以进行的通用操作,所以不要在意。

这就意味这你可以去寻找你想要运行的类,对我来说,我想要运行关于 Fairs 的单元测试。

现在当我按下 cmd + u 就将指运行这些测试类。

封装起来

这意味着我可以以合理的步调继续我的工作了。Executed 15 tests, with 0 failures (0 unexpected) in 0.277 (0.312) seconds。现在我可以在我泡一杯茶的时间内运行一遍完整的单元测试集了。

额外提醒:如果你不想用鼠标来改变 scheme,这些 快捷键 可以让你在 scheme 之间上(cmd + ctrl + [)下(cmd + ctrl + ])切换。





原文发布时间为:2016年05月11日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-08-16 19:55:54

使用 Xcode 的 Scheme 来跑不同的测试集合的相关文章

Project、Target、Workspace and Scheme

Project.Target.Workspace and Scheme 前言 今天有人问我Target和Project是什么关系?额...学习iOS开发都知道Target和Project的关系.这里我就简单的做了一个总结,而且加入的Scheme和Workspace.如果不当的地方,欢迎指教. 开始 废话不多说,如果你的英语够NB,你可以直接看这里:Project.Target.Workspace.Scheme.下面就简单来介绍一下各位. Xcode Project 简单来说就是一个项目,我们新建

差点错失整体跑分达到1062.7分的高性能云主机

7月20日左右,我接到一哥们儿的电话,邀请我参加他们研发的新一代高性能云主机的内部测试.这哥们儿多年前和我同一个公司做运维,后来被高薪挖去了某大型云计算企业,惹一帮人眼红,一年前辞了职,据说是加入了一个创业公司,立志要做新一代高性能云主机. 虽然,现在传统IT转云已经初露端倪,发展迅速,云计算替代传统IT是个大趋势.但是国内各家云,在圈子自嗨.TO-VC.玩概念热闹了几年后,终究没几个拿得出稳定可靠的产品.别看那么多云计算公司,找个靠谱的分布式快存储系统不容易,找个好用的云主机更不容易.我司算是

OpenCascade Tcl vs. ACIS Scheme

OpenCascade Tcl vs. ACIS Scheme eryar@163.com 摘要Abstract:本文通过OpenCascade的Tcl/Tk和ACIS的Scheme的对比来说明脚本语言在程序中的重要作用.及通过在Tcl中实现自定义的命令来理解Draw Test Harness的实现,在此基础上更有利于对OpenCascade的理解,其中Draw Test Harness一些命令的实现可以做为程序实现的参考. 关键字Key Words:OpenCascade, Tcl/Tk, A

Xcode 6 上 Swift 框架的测试心得

我耗费了大半暑期来琢磨Swift作为一门函数是编程语言都能做些什么,而今已经转移 到使用Swift来开发库文件了.我花了一天的时间,最后发觉之前做的Swift特性探究是相当愉快的经历,我发现仍旧需要学习如何去做一些最基本的琐 事,下面就是一些我在默认的框架测试设置下遇到的问题. 我在用Swift语言创建创建一个新的Cocoa框架的工程就发生了点问题.不过在默认设置下,这些问题会到测试的时候才尾随而来,你会误以为在完成一个 App后摁下了"Cmd+U"测试就会运行,那么你就错了.这时在&

JavaScript的基准测试-不服跑个分?

原文:Bulletproof JavaScript benchmarks 做JavaScript的基准测试并没有想的那么简单.即使不考虑浏览器差异所带来的影响,也有很多难点-或者说陷阱需要面对. 这是为何我创建了jsPerf的一个原因,一个你可以轻松创建并分享各种代码片段对比结果的简单工具.用起来非常省事,只需把想要测试的代码录入然后jsPerf会为你创建好可以跨平台跑起来的测试用例. 内部实现上,最开始jsPerf用的是一个基于JSLitmus的基准测试库,我将它称作Benchmark.js.

构建iOS持续集成平台(一)自动化构建和依赖管理

2000年Matin Fowler发表文章Continuous Integration[1]:2007年,Paul Duvall, Steve Matyas 和 Andrew Glover合著的<Continuous Integration:Improving Software Quality and Reducing Risk> [2]出版发行,该书获得了2008年的图灵大奖.持续集成理念经过10多年的发展,已经成为了 业界的标准.在Java, Ruby的世界已经诞生了非常成熟的持续集成工具

iOS内存错误EXC

iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里. 首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源在于对一个已经释放的对象进行release操作.举一个简单的例子来说明吧,首先看一段Java代码: public class Test{ public static void main(String[] args){ String s = "This is a t

Win8下在Vmware11中安装使用苹果系统OS X 10.10

原文:Win8下在Vmware11中安装使用苹果系统OS X 10.10   近来因为需要做 iOS 的项目,所以需要多花一些时间看看敲敲代码.因为自己手头上并没有 Mac(过年为了闲的时候能玩玩游戏买了联想,唉),想想不能只靠每天在公司的时间练 demo 吧,那样学的太慢了,所以就想着在 Win8 下装个 Mac 试试.装 Mac 有两个选择,一个是双系统,这个我查了查,发现我的型号的笔记本驱动问题太多,再加上我已经装了 Ubuntu 双系统,怕自己搞出大问题来,所以放弃.如果你想装双系统的话

[译] 原生 iOS(Swift) 和 React-Native 的性能比较

本文讲的是[译] 原生 iOS(Swift) 和 React-Native 的性能比较, 原文地址:Comparing the Performance between Native iOS (Swift) and React-Native 原文作者:John A. Calderaio 译文出自:掘金翻译计划 译者:Deepmissea 校对者:gy134340,Danny1451 原生 iOS(Swift) 和 React-Native 的性能比较 React-Native 是一个混合的移动框架