使用Xcode测试导航可以很容易运行测试并查看结果。还有其他几种方式运行测试。Xcode基于测试target运行测试。使用测试导航,你可以直接启用和禁用测试target,类和方法,而不需要使用编辑器。
运行测试命令
测试导航为你提供一种简单的方式运行测试,运行测试是编程流程的一部分。可以在源代码编辑器或在菜单直接运行测试。
使用测试导航
当你将指针移到测试导航中的bundle、类或方法名上,会出现一个运行按钮。你可以运行一个测试或类中的所有测试或者bundle中所有的测试,这取决于你指针指在测试导航列表的位置。
- 要运行bundle中的所有测试,在测试bundle名上按住指针并单击右边出现的运行按钮。
- 要运行类中的所有测试,在类名上按住指针并单击右边出现的运行按钮。
- 要运行一个测试,在测试名上按住指针并单击右边出现的运行按钮。
使用源代码编辑器
当你在源代码编辑器中打开测试类时,在每个测试方法名旁边会出现一个指示器。将指针放到指示器上会显示一个运行按钮。点击运行按钮运行测试方法,指示器会显示测试时通过或失败。将指针放置在指示器上回重新显示运行按钮,可以重复测试。此处机制是一次只能运行一个测试。
注意:在类的实现旁边会出现同样的指示器,你可以运行类中的所有测试。
使用产品菜单
产品菜单包括在键盘输入快速访问命令直接运行测试。
- Product > Test.运行当前scheme。快捷键是Command-U。
-
Product > Build for > Testing 和 Product > Perform Action > Test without Building。这两个命令可以用来build测试bundle产品同时独立运行测试。这些
命令是测试build和测试过程的快捷方式。当更改代码后,在build过程中检查警告和错误时非常有用,快捷键分别是Shift-Command-U 和 Control-Command-U。 - Product > Perform Action > Test ****。例如, Product > Perform Action > Test testAddition。快捷键是Control-Option-Command-U。
注意:除了源代码编辑器,这个命令在项目导航和测试导航中均可用。
在测试导航中,可以选择测试bundle,类或方法。在项目导航中,可以选择测试类实现文件,例如,CalcTests.m
。
- **Product > Perform Action > Test Again **。重新运行最新测试方法,当调试/编辑代码时非常有用。类似Product > Perform Action > Test命令,快捷键是Control-Option-Command-G。
显示测试结果
XCTest框架会在Xcode中显示测试方法通过或失败。从下面的截图可以看到结果。
-
在测试导航中,你可以在测试或一组测试运行后查看通过或失败指示。
如果测试方法嵌入在相关类或测试bundle中,该指示反映的是整个测试类或测试bundle的状态。在这个例子中,
BasicFunctionsTests
类中至少有一个测试失败。
- 在源编辑器中,你可以查看通过或失败指示并调试信息。
- 在报告导航中,你可以查看测试运行结果输出。在左边面板中选择你想要检查的测试,并选择测试面板进行查看。
- 性能测试,点击时间列中的值以获得详细的性能结果报告。你可以查看测试总性能,也可以通过点击单个测试运行按钮,查看十次运行结果。使用编辑按钮可以设置或修改测试的基准线,设置通过或失败指示的最大标准误差。
- 使用日志面板,你可以查看相关失败描述和其他摘要输出。通过点开小三角,你可以深入到运行测试中的所有细节。
注意:除了项目左边的小三角,测试失败右边的小图标也可以展开更多的信息,你可以看到
testMultiplication
失败。
- 调试控制台显示运行测试的综合信息。与日志导航一样展示信息,如果你一直在调试,调试的其他信息也会出现在这里。
使用scheme和测试target
Xcode scheme控制build,运行,测试,调试菜单命令。当你在测试导航中创建测试target、执行其他系统操作时,Xcode管理scheme配置,例如,当你启用或禁用测试方法、测试类或测试bundle。在管理Scheme菜单中勾选共享复选框,可以使用Xcode服务并持续集成,并管理项目和源代码。
查看测试的配置scheme:
- 在工具栏中选择Scheme menu > Manage Schemes。
在这个项目中有两个scheme,一个build应用,另一个build库/框架。配置scheme的右边有个复选框,表明scheme是否共享Xcode服务。
2.在管理表单中,双击scheme使之显示在scheme编辑器中。当你执行测试命令时,scheme的中Test表示Xcode执行测试。
注意:测试导航和配置/设置助手与测试target、测试类和测试方法相关联,通常管理测试相关设置。
关于使用配置和编辑可用scheme,参见编辑scheme帮助(Scheme Editor Help)和在Xcode中使用scheme和project( WWDC 2012: Working with Schemes and Projects in Xcode (408))。
build设置——测试应用,测试库
应用测试运行在你的应用环境中,可以结合app中不同的类、库/框架进行功能测试。库测试可以不依赖app,独立测试库或框架的类或方法,验证行为是否符合库的要求。
不同的build设置需要两种测试bundle。当你在新建target窗口中选择target参数并创建测试target时,会自动配置build设置。可以选择应用SampleCalc
,和库/框架CalcLibrary
。
选择SampleCalc
作为build产品的测试target。应用进程管理测试的执行,测试接收applicationDidFinishLaunching
通知后执行。默认产品名称“SampleCalc Tests,”来自SampleCalc
;你可以按你自己的喜好改变它。
如果你选择CalcLibrary
作为相关build产品,target助手配置build设置为库测试。Xcode启动测试运行时环境,库或框架,测试代码由Xcode管理。默认产品名称来自库target(“CalcLibrary Tests”)。你可以按你自己的喜好改变它。
默认build设置
在大多数情况下,为app或库测试配置build设置时,你只需要选择正确的测试target关联产品。Xcode自动为你管理build设置。因为你需要自己设置一些复杂build的项目,理解标准build设置是非常有用的。
SampleCalc
项目作为例子来说明正确的默认设置。
1.在项目导航点击SampleCalc
进入项目编辑器,选择SampleCalc
作为测试target。
在编辑器中的通用面板中,显示Target弹窗。弹窗中显示SampleCalc
作为target。
你可以检查build设置SampleCalcTests
是否为target。
2.单击build设置,然后在搜索区域中输入 Bundle Loader
。SampleCalc
应用将加载SampleCalc
的测试。你会看到调试和发布版本的自定义参数路径。
如果你搜索 Test Host
会出现相同的路径,如下图所示。
本项目的计算器库target是CalcLibrary
,相关的测试target是CalcLibraryTests
。
3.选择CalcLibraryTests
target和通用面板。
target设置为None
。同样检查build设置面板中的 Bundle Loader
和Test Host
没有相关的参数。这表明Xcode设置了默认值,这是正确的配置。