如何在 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.framework
和 Nimble.framework
。
10. 您应该能够按照 Quick Documentation
中的示例进行操作
按照以下步骤可靠地设置 Quick and Nimble:
先决条件:
cocoapods 安装在你的机器上 (installation Guide)
1) 创建一个新的 Xcode 项目
Xcode—>文件—>新建—>项目
2) Select Single View App (一般大部分应用都用这个) —>Next
输入产品名称(App NAme)-(这里我们使用 WeatherForecast)
启用包含单元测试的复选标记
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”
以下步骤修复了错误
尝试以下操作:
打开 Xcode 方案列表
用“show”勾选Nimble and Quick,然后关闭。
Select 灵活的方案和构建 (cmd + B)
Select 快速构建方案(cmd+B)
将 scheme 改回您的应用程序 scheme 并查看错误是否消失并且自动完成是否正常工作
这是我时常要做的事
背景:
在 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
.
您的项目中可能存在奇怪的构建设置或类似的东西。您可以使用原始测试项目来验证这一点。
如果似乎没有任何效果,您应该上传您的项目(例如上传到 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 项目。
- 文件 -> 添加文件到:
- 确保 Project Navigator 已 selected
9. 在测试目标的 Link Binary with Library
构建阶段,按照 Git Submodule section
中的步骤 three
到 link Quick.framework
和 Nimble.framework
。
10. 您应该能够按照 Quick Documentation
按照以下步骤可靠地设置 Quick and Nimble:
先决条件:
cocoapods 安装在你的机器上 (installation Guide)
1) 创建一个新的 Xcode 项目
Xcode—>文件—>新建—>项目
2) Select Single View App (一般大部分应用都用这个) —>Next
输入产品名称(App NAme)-(这里我们使用 WeatherForecast)
启用包含单元测试的复选标记
3)安装
打开终端
移动到你的工作目录 cd(你的项目文件夹的路径)
例如:在终端输入 cd /Users/Documents/天气预报
4) 用
初始化 podsPod 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”
以下步骤修复了错误
尝试以下操作:
打开 Xcode 方案列表
用“show”勾选Nimble and Quick,然后关闭。
Select 灵活的方案和构建 (cmd + B)
Select 快速构建方案(cmd+B)
将 scheme 改回您的应用程序 scheme 并查看错误是否消失并且自动完成是否正常工作
这是我时常要做的事