WWDC18:运行中的Xcode 10

最初在这里发布在XCBlog上

苹果的世界开发者大会(WWDC)2018已于本周开始。 按照承诺,随着WWDC内容的宣布,我将撰写一系列博客文章。 关于iOS12,watchOS5等新软件的公告很多。但是,还有另一场平台联盟国会议,这是致力于Apple平台开发人员的主题演讲。 Apple宣布了Xcode 10,其中包含了许多新功能,并且在会议中进行了演示。 在本文中,我们将使用macOS高级版Sierra快速探索Xcode 10的新功能,因为macOS Mojave尚未公开,因此我们不会看到Xcode的暗模式。

Xcode 10具有许多功能,这些功能已在WWDC的平台状态国会议上宣布。 在这篇文章中,我们将仅介绍以下功能。

  • 并行测试:XCTest和XCUITest
  • XCODEBUILD
  • 代码段
  • 方案编辑
  • 多行编辑
  • 新建系统
  • 源代码控制

我们将简要研究Xcode的那些功能。

并行测试:XCTest和XCUITest

苹果实际上在去年WWDC17上宣布了并行测试功能,我们可以在其中指定多个目标,并且测试将相应地在不同的模拟器或设备上触发。 您可以在这里阅读有关去年宣布的XCTest功能的更多信息。 但是,今年它通过创建仿真器的克隆扩展到在单个仿真器中并行化测试套件。 Xcode在后台创建了不同的运行程序流程,每个流程都分配了特定的测试。 这大大减少了测试执行。

我们可以通过更新方案来启用并行测试,并且在“测试”操作中,可以针对测试包选择“选项”以选择并行化选项。 我们也可以选择位置。

还有其他一些选项可以使测试随机化,并可以在方案中添加新测试。 让我们首先关注并行化。 选中此复选框后,我们都准备针对该方案并行执行测试。

默认情况下,只分配了两个运行器进程,但是从命令行运行时,我们可以增加数量。 在Xcode测试报告中,哪个模拟器克隆运行哪些测试。 测试报告分组在一起。

实际上,这是对测试执行速度的极大改进。 使用并行测试技术,我们可以大大加快单元测试和UI测试的速度。 使用这种技术,我们仍然应该能够在多个模拟器目标位置执行测试。

并行运行XCTest的各种选项已添加到xcodebuild工具中,我们将在本文的以下部分中进行探讨。

XCODEBUILD

Xcode 10附带了各种命令行工具,这些工具可以帮助从命令行或脚本中实现各种功能。 这是为各种目的添加到xcodebuild中的一些新选项。

平行测试

可以使用xcodebuild工具从命令行运行XCTest。 使用Xcode 10,我们还有其他一些选项可以启用并行测试,这些是

  • -maximum-concurrent-test-device-destinations NUMBER:要同时测试的最大设备目标数
  • -maximum-concurrent-test-simulator-destinations NUMBER:要同时测试的模拟器目标的最大数量
  • -parallel-testing-enabled YES | NO:覆盖方案中的每个目标设置
  • -parallel-testing-worker-count NUMBER:并行测试期间将产生的测试运行程序的确切数量
  • -maximum-parallel-testing-workers NUMBER:并行测试期间将产生的最大测试运行程序数

这些选项使我们能够像在Xcode 10中一样并行执行XCTests。我们有一个为并行测试配置的项目和方案,然后我们可以轻松地执行以下命令以在iPhone X模拟器中实现并行测试。

  $ xcodebuild -project Xcode10-Demo.xcodeproj / -scheme Xcode10-Demo -destination'platform = iOS Simulator,OS = 12.0,name = iPhone X'clean build test CODE_SIGN_IDENTITY =“” CODE_SIGNING_REQUIRED = NO-并行测试工人计数4 

此命令将开始执行iPhone X模拟器的四个克隆。

对于并行测试,我们可以从命令行获得相同的结果。

将应用上传到App Store

可以从Xcode 10版本的xcodebuild工具将iOS应用程序上传到App Store。 用以下命令

  $ xcodebuild -exportArchive -archivePath  [-exportPath ] -exportOptionsPlist  

我们需要传递包含关键目标和值上传的ExportOptions.plist文件,还必须确保Xcode配置了正确的成员资格详细信息,才能连接到Apple开发人员门户。

公证应用

苹果推出了另一项服务,称为公证应用程序,这意味着苹果公司将在上载到App Store之前对其进行标记。 我们必须上传一个要经过Apple公证的应用程序。 现在,xcodebuild中有一个选项也可以从命令行执行此操作。

  $ xcodebuild -exportNotarizedApp -archivePath  -exportPath  

我们还可以使用-exportNotarizedApp选项来导出已完成开发者ID公证的应用。

代码段

使用Xcode 10,我们可以创建自定义代码段并在需要时重用。 这是很酷的功能,可以从Xcode编辑器菜单访问–>创建代码片段

当我们可以在Swift和特定平台上创建代码片段时,代码片段的功能就发挥了作用,但是当我们也能够为其他语言创建代码片段时,就具有了强大的功能。 例如Ruby,YAML等。我们必须为代码段定义快捷键。 最重要的是,我们可以访问默认的Swift模板来创建代码段。 例如,我们将为XCTActivity创建一个代码段,这样我们就不必在每次执行步骤时都重复执行该关闭操作。 我们将添加一些在Xcode中按$ 9时将被调用的代码段。 现在每次您在Xcode中按$ 9,它会提示您一个已经创建的代码段。

选择代码段后,这将输入我们设置的整个代码段。

方案编辑

使用Xcode 10,甚至可以方便地选择和编辑方案和设备。 通过简单的CTRL + 0按键,Xcode将突出显示“方案”部分,我们可以浏览现有方案。 我们还可以通过按CTRL + 0键输入一些内容来过滤方案。

通过按CTRL + SHIFT + 0键,我们可以使用类似的技术来选择目标设备/模拟器。

多行编辑

Xcode 10通过按住CTRL + SHIFT并选择点来选择多个实例,从而支持多行编辑。 例如,我们想将所有功能更改为私有功能,那么我们可以选择func的所有实例,并用私有功能替换它,如下所示。

它也可以应用于列编辑以及WWDC演示中提到的内容。

新建系统

新的构建系统已于去年宣布,但默认情况下未在Xcode 9中激活。 但是,在Xcode 10中,默认情况下已激活新的构建系统。 我们仍然可以从Xcode-Files-Project / Workspace设置选项回到旧的,旧的构建系统。 您可以在上一篇博客文章中阅读有关新构建系统的更多信息。

源代码控制增强

去年苹果公司宣布与Github紧密集成,您可以在此处了解更多信息。 今年,苹果公司集成了更多的源代码控制系统,例如Gitlab和BitBucket。 更重要的是,Xcode现在可以突出显示Xcode开发人员所做的更改将能够解决Xcode本身的合并冲突。 另一个很棒的功能是用户可以从Xcode创建ssh密钥并上传到远程源代码管理。

如您所见,开发人员可以直接从Xcode采取丢弃更改,拉出更改,重新设置更改等操作。

Github上可用的源代码: Xcode10-Demo

Xcode中缺少零件

尽管Xcode 10宣布了一些很棒的功能,但是仍然缺少一些东西

  • 到目前为止,与Xcode中的持续集成无关,例如BuddyBuild或Xcode Server。 仍有几节课要举行,但到目前为止,没有与CI相关的任何内容。
  • 您可以想到的其他任何内容,都可以在评论中放弃。

结论

我们刚刚看到了在WWDC 2018上宣布的Xcode 10实际使用的高级功能。随着我们在WWDC会议上的进展,我们将在以后的博客文章中介绍每个主题的详细信息。 希望您喜欢WWDC中宣布的Xcode 10功能,您对此有何看法? 您是否认为您所期望的缺少任何东西?

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..