`

OCSlimProject
OCSlimProject 是一个针对 iOS 和 macOS 的 CocoaPod,让您可以使用 Xcode 和 Fitnesse 创建快速的、坚如磐石的自动化验收测试。
Fitnesse 是一个强大且完全集成的独立 wiki 和验收测试框架。它旨在用于 ATDD 和 BDD 风格的软件开发。
为什么使用 Fitnesse?
"FitNesse是一款用于指定和验证应用程序接受标准(需求)的工具。它充当软件交付过程中不同利益相关者(学科)之间的桥梁。它的wiki服务器使得文档软件变得容易。它的测试执行能力允许您验证文档与软件的一致性,确保文档保持最新并软件未出现回归。" - Fitnesse用户指南
用法
要运行示例
- 克隆存储库,并在Example目录中运行
pod install
。 - 打开OCSlimProject.xcworkspace以查看编号为Mac和iOS验收测试的示例,这些测试与普通的Xcode项目集成。
需求
- Xcode 7
- CocoaPods
- Java 1.8(Fitnesse所必需)
它是如何工作的
OCSlimProject通过创建应用程序的单独目标来工作。这个'验收测试'目标是包含应用程序的业务逻辑代码('系统测试')
测试实例是您在Swift或Obj-C中编写的粘合代码,它提供对应用程序业务逻辑的简单封装。这是您的应用程序代码与Fitnesse之间的集成点。将Fitnesse视为使用应用程序的替代用户界面。因此,测试实例(就像视图控制器一样)不应包含比简单类更多的内容,这些类将调用委托到您的业务逻辑代码。
验收测试应用程序与常规应用程序的架构对比
Fitnesse使用称为Slim(简单列表调用方法)的通信协议与您的应用程序通信。实现此协议的工作由cslim项目提供,该项目包含由Erik Myer编写的Objective-C实现。当选择使用Swift编写测试实例时,需要确保您的测试实例是NSObject的子类。
开始使用
OCSlimProject可通过CocoaPods在项目中使用,它设计用于通过Xcode模板进行集成。这些模板封装了将您的应用程序与Fitnesse集成的所有工作。
1. 安装模板
- 从GitHub下载 OCSlimProjectXcodeTemplates 并运行 make
$ git clone https://github.com/paulstringer/OCSlimProjectXcodeTemplates.git
$ cd OCSlimProjectXcodeTemplates
$ make
这会添加用于创建iOS和macOS验收测试目标的Xcode项目模板。这些模板安装于 ~/Library/Developer/Xcode/Templates/Test。
-
导航到Xcode的“新目标”设置的“测试”部分。在iOS和macOS中,您将看到两种新的测试目标类型
- 验收测试
此目标通过Fitnesse框架构建iOS/macOS应用程序,进行验收测试。需要使用CocoaPods的工程。
- 验收单元测试包
此目标通过Fitnesse构建一个iOS/macOS单元测试包,它从验收测试目标生成结果,然后在内置Xcode中报告它们作为XCTest结果。
2. 在项目添加'验收测试'目标
创建一个“验收测试”目标是下一步。遵循此步骤后,您可以开始编写验收测试。
-
使用“验收测试”模板为您的项目添加一个“验收测试”目标。模板适用于iOS和macOS。macOS目标运行更快,iOS目标允许您使用依赖UIKit的类。
-
使用以下Podfile条目通过CocoaPods将OCSlimProject链接到“验收测试”目标
target 'AcceptanceTests' do platform :ios, 9.0 pod 'OCSlimProject' end
-
根据需要运行
pod install
或pod update
-
打开CocoaPods生成的项目工作区
-
构建“验收测试”目标以生成应用程序(在代码更改后重复此操作)
-
在项目根目录中运行脚本
./LaunchFitnesse
以启动Fitnesse -
根据提示下载所需的 Java 1.8。
-
现在,Fitнесse 运行后,查看 示例 并运行测试
3. 开发稳固的、运行极快的行为验收测试!
你现在已经准备就绪并可开始为 iOS 和 macOS 应用开发稳固、快速、自动化的行为验收测试。
-
对于基础的介绍,请遵循这个 分步教程,介绍如何编写带有验收测试的示例 App。
-
查看示例项目
- 井字棋游戏
- CosyHome
- RemixStarBrowser via @dcutting
-
以下是示例:
-
关于使用 BDD 和 Fitnesse 开发软件的更深入教程,请参见以下 Clean Coder 视频教程。
XCTest 集成
OCSlimProject 通过支持 XCTest 集成于您的开发和工作流程中,您可以在 Xcode 或使用 xcodebuild 运行并查看您的 Fitnesse 验收测试结果报告。
-
根据上一个示例中的步骤创建验收测试目标
-
使用“Acceptance Unit Test Bundle”模板将“AcceptanceUnitTests”目标添加到您的项目中。
您最初选择的模板应与验收测试目标的平台相匹配。例如,如果您有一个 iOS 验收测试应用,请使用 iOS 验收单元测试包。
-
在项目设置中输入“OCSlimProjectExamplePage”作为“Fitnesse 套件页面名称”。
-
编辑您的 Podfile 并添加以下 Podfile 条目
target 'AcceptanceUnitTests' do platform :ios, 9.0 pod 'OCSlimProjectTestBundleSupport' end
-
运行
pod update
-
重要 在构建阶段中添加您的“AcceptanceTests”目标作为此新目标的后置依赖项。这确保在运行测试之前已经构建了最新的代码。
-
按住CMD-U并验证接受测试运行并显示的结果与在Fitnesse中运行时看到的结果一致。
最后
- 将 'AcceptanceUnitTest' 目标添加到任何你想将接受测试作为开发测试工作流程一部分运行的方案测试阶段。例如,将 'AcceptanceUnitTest' 添加到您主要应用目标测试阶段。这样将在运行常规单元测试的同时运行接受测试。
已知的一些问题
云CI示例:Travis
由于从Xcode的新映像启动模拟器的异常长时间延迟,与CI系统(如Travis)集成时存在已知问题。(这可能会影响使用新鲜VM镜像的其它CI系统。)
与 `--no-integrate` 的问题
使用 `pod install --no-integrate
` 选项的项目当前不受支持。有关如何解决该问题的详细信息,请查看 这个问题。
** CI System Script **
xcodebuild -workspace <Workspace> -scheme <AcceptanceUnitTestBundleScheme> -destination 'platform=iOS Simulator,name=iPhone 6s' test
** TEST FAILED **
The command "set -o pipefail && xcodebuild -workspace <Workspace> -scheme <AcceptanceUnitTestBundleScheme> -destination 'platform=iOS Simulator,name=iPhone 6s' test" exited with 65.
错误发生在尝试仅运行基于iOS的 'Acceptance Unit Test Bundles' 时,如这个示例所示。模糊的证据似乎指向它是由XCTest等待负责生成Fitnesse测试结果的构建阶段超时所致。这本身取决于启动模拟器。由于某些未知原因,这永远不会完成。
解决方案
解决方案很简单,即先运行其他单元测试,然后再运行您的方案。通常,这仅需要确保先运行您的实际单元测试。这似乎为模拟器做好准备工作,以便当Fitnesse需要时,它可以随时准备好。
查看此项目的 Travis 配置 以获取示例。
致谢
此存储库的拥有者不声称以下所包含的资源(除归该拥有者所有的资源外)。这是一个方便的轻量级包装器,可能受到这些资源的启发或使用这些资源,并结合一些项目粘合剂。目标是通过自动化设置 Xcode 项目的流程,以便更容易地使用 'ocslim' 并与 Fitnesse 集成。
Fitnesse
创建者:Robert Martin,Micah Martin 以及 Fitnesse.org 贡献者。
OCSlim, RunTestsTargetWithSlimPort
创建者:Erik Meyer,Doug Bradbury,8th Light。
https://github.com/ericmeyer/ObjectiveCSlim
https://github.com/dougbradbury/cslim/tree/ocslim
exportenv.sh
创建者:Jon Reid
https://github.com/jonreid/XcodeCoverage
Xcode 项目模板,OCSlimProjectTestBundleSupport,启动 Fitnesse
创建者:Paul Stringer
https://github.com/paulstringer/OCSlimProject
授权
OCSlimProject遵从MIT许可证。更多信息请参阅LICENSE文件。