除了在开发期间交互运行测试外,还可以利用使用服务器自动运行测试。
基于服务器的持续集成测试
Xcode测试功能,以交互方式使用,确保您的代码相对于其指定的要求保持正常,并确保开发的错误很容易找到和修复。一套快速运行的功能测试证明你的工作,你要做什么,并确保坚实的应用基础,你可以建立在高效和自信。
也就是说,成功的开发项目往往超越单一开发人员实施和维护的范围。像源代码管理一样,服务器上的自动测试通过允许您的开发工作顺利,高效地扩展到团队的需求来提供好处。
以下是使用基于服务器的测试的一些好处:
1.使用服务器进行脱机构建和测试,可以使您的开发系统无需执行和调试,特别是在整套测试需要很长时间运行的情况下。
2.开发团队的所有成员通过使用相同的方案在服务器上运行相同的测试,从而提高测试一致性。服务器还使构建产品可用于整个团队,就像构建和测试报告一样。
3.您可以根据项目需求和团队需求调整计划。例如,测试运行可以在团队的任何成员向源管理系统提交新工作或在设置的时间定期执行时开始。也可以在需要时手动启动测试运行。
4.服务器每次运行测试时间,以完全相同的方式。服务器的报告功能可以帮助您和您的团队随时了解构建问题,构建警告和测试解决方案的图片。
5.您的项目可以自动地以更经济的方式在更多的目的地上测试,而不是手动运行的测试系统。例如,您可以将任意数量的iOS设备连接到服务器,并且使用单个配置,系统可以在所有这些设备以及多个版本的Simulator中构建和测试库,应用程序和测试。
命令行测试
使用Xcode命令行工具,您可以对项目的构建和测试进行脚本化和自动化。使用此功能可利用现有的构建自动化系统。
使用xcodebuild运行测试
该xcodebuild命令行工具驱动测试,就像Xcode的IDE。使用xcodebuild操作运行test并使用-destination参数指定不同的目标。例如,要在本地macOS“My Mac 64 Bit”上测试MyApp,请使用此命令指定目标和体系结构:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination'platform = OS X,arch = x86_64'
如果您已插入支持开发的设备,则可以按名称或ID调用它们。例如,如果您连接了名为“开发iPod touch”的iPod touch,并且要测试您的代码,请使用以下命令:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination'platform = iOS,name = Development iPod touch'
测试也可以在模拟器中运行。使用模拟器轻松地定位不同的外形规格,操作系统和操作系统版本。模拟器目标可以通过名称或ID指定。例如:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination'platform = Simulator,name = iPhone,OS = 8.1'
该-destination参数可以链接在一起,让你只发出一个命令跨越的目标执行整合为指定的共享方案。例如,以下命令将前三个示例链接到一个命令中:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp
-destination'platform = OS X,arch = x86_64'
-destination'platform = iOS,name =开发iPod touch'
-destination'platform = Simulator,name = iPhone,OS = 9.0'
如果任何测试失败,xcodebuild则返回非零退出代码。
有关更多信息,请参阅如何在命令行中在OS X和iOS中运行单元测试?在从Xcode中常见问题的命令行构建。您还可以使用以下xcodebuild命令获取该命令的完整使用信息:
> man xcodebuild
使用ssh与xcodebuild
xcodebuild使用ssh(或从启动守护程序)从远程登录调用失败,除非在主机上创建正确的会话环境。
当您以用户身份以交互方式登录到MacOS系统时,将创建“Aqua会话”环境。Aqua会话初始化macOS交互式环境的基础设施; 它们是必需的,以便能够运行macOS应用程序。更具体地说,使用UI框架(AppKit或UIKit)的代码需要在Aqua会话中运行。由于这个要求,在MacOS上进行测试(以及在模拟器上进行测试,本身就是一个macOS应用程序)需要一个Aqua会话。
默认情况下,当您使用ssh登录到没有活动用户会话运行的macOS系统时,将创建命令行会话。要确保为ssh登录创建Aqua会话,您必须有一个用户在远程MacOS主机系统上登录。在远程系统上运行的用户的存在会强制Aqua会话进行ssh登录。
一旦用户在主机系统上运行,xcodebuild从ssh登录运行适用于所有类型的测试。例如,以下Terminal应用程序命令运行在开发系统主机上为“MyApp”定义的测试ssh:
> ssh localhost
> cd〜/ Development / MyAppProject_Folder
> xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination'platform = Simulator,name = iPhone 6'
对于需要更深入了解ssh,启动恶魔和启动代理以及它们如何与系统交互的用户,请参阅技术说明“ 守护程序和代理和守护程序和服务编程指南”。
使用Xcode Server和连续集成
Xcode通过Xcode Server支持完全集成的基于服务器的持续集成工作流程。MacOS Server中提供的Xcode Server可自动化构建,分析,测试和归档应用程序的集成过程。使用Xcode Server和持续集成工作流程被设计为对您的交互式开发工作无缝和透明。
要了解有关设置和使用Xcode Server的所有信息,请参阅Xcode Server和Continuous Integration Guide。