如何在 Xcode 8 上可靠地安装和设置快速测试框架?

How to reliably install and setup Quick test framework on Xcode 8?

背景:
this answer 上工作时,我注意到在 Xcode 上正确设置 Quick test framework 并非易事。在我的例子中,经过 3-4 次失败的尝试才最终得到一个可用的版本。而且,我不确定我以前的尝试哪里错了。或者更重要的是,为什么该线程中的发问者每次都可能有重复的 运行。然后他也花了好几次尝试才终于有了一个可以工作的。

问题:
我想问你们是否有可靠的方法使用 Cocoa pods(或 Carthage 或 Git 子模块)在 Xcode 上设置 Quick Framework,最多 运行设置一个正常工作的快速测试用例,您愿意分享。

我之前是怎么做的:
这是我如何创建我的作品 Quick framework on Xcode
1. 我按照XCTest article in RayWenderlich site中的步骤搭建XCTest环境
2. 然后我根据 installing Quick
添加 Cocoa Pods 3. 然后按照Setting up your Xcode
中的说明进行操作 4. 然后我在剩下的所有过程中都进行了黑客攻击和即兴创作,然后用谷歌搜索我遇到的每个问题,尝试这个那个,直到它起作用。
(这些步骤包括在我的目标的构建阶段将 Quick 框架添加到 link 二进制文件)

我并不自豪地分享我上面的步骤,但我现在没有更好的方法。我希望通过提出这个问题找到更好的方法。可能问的太多了。

我的播客文件:

target 'PlayQuick' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for PlayQuick

target 'PlayQuickTests' do
    inherit! :search_paths
    # Pods for testing
    pod 'Quick'
    pod 'Nimble' 
end

end

通过 cocoa 集成 Quick & Nimblepods 开箱即用,没有任何问题(macOS Sierra,Xcode8.3.2,iOS 10.3 SDK,Swift 3.1,可可pods 1.2.1)。

确保安装了最新的稳定版 cocoapods (gem update cocoapods) 并调用 pod install 而不仅仅是 pod update。您也可以尝试通过调用 pod deintegrate && pod install.

从头开始​​重新整合您的 pods

您的项目中可能存在奇怪的构建设置或类似的东西。您可以使用原始测试项目来验证这一点。

如果似乎没有任何效果,您应该上传您的项目(例如上传到 GitHub),以便社区能够查明问题所在。

Git submodule way 是实现该目标的最精益和最简单的方法。

按照以下步骤从零开始:

1.a。创建 Xcode 项目并选中 Include Unit Tests

1.b。或者,您可以 create unit test target 在现有项目上。

  • 打开测试导航器。
  • 点击左下角的+按钮,然后select New Unit Test Target... 从菜单:


2.关闭(1)中的Xcode项目

3. 创建新的 Xcode 工作区。文件 -> 新建 -> 工作区。

4. 打开终端 / Bash Shell / Cmd.exe

5. 为 GitHubProjectClones 创建一个新的子目录。

  • 例如:$HOME/Developer/GitHubProjectClones


6. cd 到(5)中的子目录:

  • mkdir 供应商
  • git 初始化


7. 按照 Git Submodule section

中的步骤 one
  • git 子模块添加 git@github.com:Quick/Quick.git Vendor/Quick
  • git 子模块添加 git@github.com:Quick/Nimble.git Vendor/Nimble
  • git 子模块更新 --init --recursive


8. 按照 Git Submodule section 中的步骤 two 进行操作。

  • 返回 Xcode 并打开工作区:
    • 确保 Project Navigator 已 selected
      • 文件 -> 添加文件到:
        • select 第 7 步中创建的 Quick 文件夹。
      • 文件 -> 添加文件到:
        • select 第 7 步中创建的 Nimble 文件夹。
      • 文件 -> 添加文件到:
        • select 您在第 1 步中的 Xcode 项目。


9. 在测试目标的 Link Binary with Library 构建阶段,按照 Git Submodule section 中的步骤 three 到 link Quick.frameworkNimble.framework

10. 您应该能够按照 Quick Documentation

中的示例进行操作

按照以下步骤可靠地设置 Quick and Nimble:

先决条件:

cocoapods 安装在你的机器上 (installation Guide)

1) 创建一个新的 Xcode 项目

Xcode—>文件—>新建—>项目

2) Select Single View App (一般大部分应用都用这个) —>Next

  • 输入产品名称(App NAme)-(这里我们使用 Wea​​therForecast)

  • 启用包含单元测试的复选标记

3)安装

打开终端

移动到你的工作目录 cd(你的项目文件夹的路径)

例如:在终端输入 cd /Users/Documents/天气预报

4) 用

初始化 pods
Pod init

5) 在您喜欢的文本编辑器中打开新创建的 Podfile。

使用以下内容编辑 podfile

platform :ios, '9.0'

target WeatherForecast’ do

  use_frameworks!

  # Pods for WeatherForecast

  target 'WeatherForecastTests' do

    inherit! :search_paths

    # Pods for testing

    pod 'Quick'

    pod 'Nimble'

  end

5) 将 podfile.Return 保存到终端并

在终端

中输入pod install

6) 这将安装您的新框架并创建一个 pods 项目。它还将生成一个工作区。您现在应该在处理项目时使用新的工作区。因此,如果您打开了项目,则已经将其关闭并改为打开 WeatherForecasr.xcworkspace。

7) 设置测试 class

在您的测试目标中创建一个新组并通过以下方式归档: 突出显示天气预报测试。

文件—>新建—>群组

重命名新组模型测试

突出显示您的新群组

文件—>新建—>文件

Select Swift 文件,按下一步

  • 将新文件命名为 CurrentSpecs 。按创建

7) 在您的新文件中用以下内容替换内容

import Foundation

import Quick

import Nimble

@testable import WeatherForecast

class CurrentWeatherSpecs: QuickSpec {

}

*之后您可能会遇到错误

“没有这样的模块快”

“没有这样的模块 Nimble”

以下步骤修复了错误

尝试以下操作:

  1. 打开 Xcode 方案列表

  2. 用“show”勾选Nimble and Quick,然后关闭。

  3. Select 灵活的方案和构建 (cmd + B)

  4. Select 快速构建方案(cmd+B)

  5. 将 scheme 改回您的应用程序 scheme 并查看错误是否消失并且自动完成是否正常工作

这是我时常要做的事