XCTest-5-运行测试和查看结果

运行测试和查看结果很容易使用Xcode测试导航器,就像您在快速入门中看到的。有几种额外的交互方式来运行测试。Xcode根据在方案中包含和启用的测试目标运行测试。测试导航器允许您直接控制在方案中包括,启用或禁用哪些测试目标,类和方法,而无需使用方案编辑器。

运行测试的命令

测试导航器为您提供了一种简单的方法来运行测试,作为编程工作流程的一部分。测试也可以直接从源代码编辑器或使用产品菜单运行。

使用测试导航器

当您将指针放在测试导航器中的包,类或方法名称上时,会出现运行按钮。您可以根据在测试导航器列表中保存指针的位置,运行一个测试,类中的所有测试或捆绑中的所有测试。

要运行捆绑包中的所有测试,请将指针保持在测试包名称上,然后单击右侧显示的运行按钮。

点击上面的那个按钮

要运行类中的所有测试,将指针保存在类名称上,然后单击右侧显示的“运行”按钮。

在类名右侧点击按钮

要运行单个测试,请将指针保持在测试名称上,然后单击右侧显示的“运行”按钮。

单个测试就把鼠标放在单个方法的右边,点击按钮

使用源代码编辑器

当您在源代码编辑器中打开一个测试类时,每个测试方法名称旁边的消息框中会显示一个清晰的指示符。将指针保持在指示器上显示运行按钮。单击运行按钮运行测试方法,然后指示器将显示测试的通过或失败状态。将指针保持在指示器上将再次显示运行按钮以重复测试。这种机制一次只运行一个测试。

示意图

注意: 同样的指示器也出现@implementation在类的旁边,允许您运行类中的所有测试。

使用产品菜单

产品菜单包括可以直接从键盘运行测试的快速访问命令。

产品>测试。运行当前活动方案。键盘快捷方式是Command-U。
产品>构建>测试和产品>执行操作>无需构建的测试。这两个命令可用于构建测试包产品,并独立于彼此运行测试。这些是方便的命令来快速构建和测试过程。当更改代码以检查构建过程中的警告和错误时,以及当您知道构建是最新的时,可以加快测试速度。键盘快捷键分别是Shift-Command-U和Control-Command-U。
产品>执行操作>测试<testName>。当您编辑测试方法并允许使用键盘快捷方式运行该测试时,此动态菜单项感测编辑插入点所在的当前测试方法。命令的名称适合显示它将运行的测试,例如,产品>执行操作>测试testAddition。键盘快捷键是Control-Option-Command-U。

注意: 除了源编辑器之外,此命令还基于项目导航器和测试导航器中的选择进行操作。当这两个导航器中的任一个活动时,源编辑器不具有焦点,并且该命令在这些导航器中的任一个中采用当前选择用于输入。在测试导航器中,选择可以是测试包,类或方法。在项目导航器中,选择可以在测试类实现文件上,例如CalcTests.m。

产品>执行操作>再次测试<testName>。重新运行最后执行的测试方法,在调试/编辑代码时最有用,其中测试方法暴露了问题。与产品>执行操作>测试命令类似,命令中显示运行的测试的名称,例如,产品>执行操作>再次测试testAddition。键盘快捷键是Control-Option-Command-G。

显示测试结果

XCTest框架以多种方式向Xcode显示测试方法的通过或失败结果。以下屏幕截图显示了您可以在哪里查看结果。

在测试导航器中,可以在运行测试或测试组后查看通过/失败指示器。

红色的❌代表测试失败了,绿色的是测试通过

如果测试方法折叠到它们各自的类中,或者将测试类折叠到测试包中,则指示符反映所包含的测试的总体状态。在此示例中,类中的至少一个测试BasicFunctionsTests已发出故障信号。

示意图

在源代码编辑器中,您可以查看通过/失败指示符和调试信息。

失败的调试信息

在报告导航器中,您可以查看通过测试运行输出的结果。激活“测试”面板后,在左侧面板中选择要检查的测试运行。。

示意图

对于性能测试,单击“时间”列中的值以获取有关性能结果的详细报告。您可以通过单击单个测试运行按钮来查看测试的总体性能以及每个运行的值。使用“编辑”按钮可以设置或修改测试基线和通过或失败指示中允许的最大标准偏差。

性能测试

使用“日志”面板,可以查看关联的故障描述字符串和其他摘要输出。通过打开公开三角形,可以向下获取测试运行的所有详细信息。

测试结果的详细信息

注意: 除了项目条目左侧的公开三角形之外,测试失败项目右侧的小图标可以展开以显示更多信息,如testMultiplication上面显示的故障中所示。

调试控制台以文本格式显示有关测试运行的全面信息。它与日志导航器显示的信息相同,但如果您一直积极从事调试,则调试会话的任何输出也会出现在那里。

以文本格式现实的有关测试运行的全面的信息

使用方案和测试目标

Xcode方案控制构建,运行,测试和调试菜单命令的功能。当您创建测试目标并使用测试导航器执行其他测试系统操作时,例如,当您启用或禁用测试方法,测试类或测试包时,Xcode会为您管理方案配置。使用Xcode Server和持续集成需要使用“管理方案”表中的复选框将方案设置为“共享”,并将其与您的项目和源代码一起检入源存储库。
要查看测试的方案配置:
1.在工具栏中选择方案菜单>管理方案以显示方案管理表。

显示方案管理表

在这个项目中有两个方案,一个构建应用程序,另一个构建库/框架。标记为“共享”的复选框将方案配置为共享方案,可供机器人与Xcode Server一起使用。

2.在管理表中,双击方案以显示方案编辑器。方案的测试操作标识Xcode在执行测试命令时执行的测试。

相关配置图片

注意: 与测试目标,测试类和测试方法相关联的测试导航器和配置/设置助手通常会为您保留有关测试操作的所有方案设置。

有关使用,配置和编辑方案的大量信息,请参见视频演示WWDC 2012:在Xcode中使用方案和项目(408)

构建设置 - 测试应用程序,测试库

应用程序测试在应用程序的上下文中运行,允许您创建测试,这些测试将来自不同类,库/框架和应用程序的功能方面的行为组合在一起。库测试在库或框架中独立于您的应用程序执行类和方法,以验证它们的行为与库的规范要求相同。

这两种类型的测试包需要不同的构建设置。当您通过在新目标助理中选择目标参数来创建测试目标时,将为您配置构建设置。目标助手显示为打开目标弹出菜单。应用程序,SampleCalc和库/框架CalcLibrary,是可用的选择。

相关配置示意图

选择SampleCalc作为此测试目标的关联构建产品将配置应用程序测试的构建设置。应用程序进程托管您的测试的执行; 在接收到applicationDidFinishLaunching通知之后执行测试。SampleCalc在这种情况下,测试目标的默认产品名称“SampleCalc Tests”来自目标名称; 你可以改变它,以适应你的喜好。

如果您选择CalcLibrary作为关联的构建产品,目标助理将配置库测试的构建设置。Xcode引导测试运行时上下文,库或框架,并且测试代码由Xcode管理的进程托管。此案例的默认产品名称来自库目标(“CalcLibrary Tests”)。您可以根据您的偏好更改它,就像应用程序测试用例一样。

构建设置默认值

对于大多数情况,选择正确的测试目标来构建产品关联是您为配置应用和库测试的构建设置所需要做的。Xcode会自动管理你的构建设置。因为您可能有一个项目需要一些复杂的构建设置,所以了解Xcode为应用程序测试和库测试设置的标准构建设置很有用。

该SampleCalc项目作为示例说明正确的默认设置。

1.通过单击SampleCalc项目导航器中的项目来输入项目编辑器,然后选择SampleCalcTests应用程序测试目标。
在编辑器的“常规”窗格中,将显示“目标”弹出菜单。弹出菜单应将SampleCalc应用程序显示为目标。

默认设置

您可以检查构建设置对SampleCalcTests目标是否正确。
2.单击构建设置,然后键入Bundle Loader搜索字段。应用程序SampleCalc加载的应用测试SampleCalc。您将看到可执行文件的路径作为Debug和Release版本的自定义参数。如果您搜索Test Host,将显示相同的路径,如图所示。

自定义参数

此项目的计算器库目标是命名的CalcLibrary,并具有关联的测试目标命名CalcLibraryTests。

3.选择CalcLibraryTests目标和常规窗格。
目标设置为None。类似地Bundle Loader,Test Host在“构建设置”面板中检查和,没有相关联的参数。这表示Xcode已使用默认值配置它们,这是正确的配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 转:http://www.jianshu.com/p/d5fca0185e83 Xcode测试 前言 总算在今天把...
    测试小蚂蚁阅读 2,835评论 0 20
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 想起我们部门两位同事离职,其原因是在事业部大家庭里面没有学到多少东西,因此,今日主要谈我们一路走来的收获,下...
    阿毅阅读 345评论 0 1
  • Markdown是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请...
    beforenight阅读 304评论 0 1