原创
2017-03-16
直接进入正题,关于Jenkins环境搭建、Ruby环境配置、fastlane使用
等请参考我的另一片文章 基于Jenkins搭建iOS持续集成开发环境
通过Ruby 的gem安装calabash
gem install calash-cucumber
calabash-ios
新建一个工程 CalabashSample
由于我们这里使用了fastlane来进行自动化构建,建议你:
fastlane init # 按照提示输入你的AppId,工程Bundle Identifier(如果在AppStore上没有该Identifier)
touch Gemfile # 成功之后,进入到你的fastlane文件夹创建一个Gemfile的文件
#在文件中添加如下内容(根据自己项目需要添加)
###### start #####
source 'https://gems.ruby-china.org/'
gem 'fastlane', '2.20.0'
gem 'slather', '2.3.0'
gem 'gym', '2.0.0'
gem 'xcov'
#### end ####
bundle install # 在终端执行此命令,至此前期准备工作已经完成
集成calabash.framework到工程
在工程中如果为了使用Calabash,需要将calabash.framework与工程关联起来,calabash.framework是Objective-C的,同样也适用于使用Swift工程。
有三种方式可以集成:
-
方式一 --- 创建一个新的Calabash Config
-
创建一个新的Configuration, 名字可以随意,但是这里我们既然功能测试使用的是Calabash,不妨就使用 Calabash 这个名称
下载Calabash.framework,还记得之前我们准备阶段的Gemfile吗?你现在需要在文件里面添加上:
-
gem "calabash-cucumber", ">= 0.16", "< 2.0"
# 这里你也可以不用写出版本号直接 gem "calabash-cucumber" 即可
# 然后你就可以在Gemfile所在的目录执行下列语句来下载了
bundle exec calabash-ios download
- 把calabash.framework与工程关联,添加如下关联flags
-ObjC
-force_load
# 这里一定要看看你的路径是否正确,我这里因为用到fastlane就多了一个fastlane
"$(SOURCE_ROOT)/fastlane/calabash.framework/calabash" -framework
CFNetwork
-
创建一个新的scheme
-
开始构建运行,请记住你在上一步骤配置的Calabash scheme,选择并运行即可,如果出现下图结果,表明配置成功
-
方式二 --- 通过配置Debug Config
相信你通过上述配置之后也看出来了,我们只不过新增加了一个Calabash Configuration,既然我们存在了一个Debug Configuration了,就没有必要再新创建一个Configuration,然后再进行Calabash 配置- 重复上述 2、3 步骤
- 配置Scheme
- 重复上述4、5 步骤即可
-
方式三 --- 通过创建新的Target
- 创建一个新的Target
- 修改Target名称
- 修改Bundle Identifier
- 更改Info.plist
- 设置Scheme
- 现在参考 ** 方式一或者方式二 ** 构建运行
- 创建一个新的Target
在模拟器上运行Calabash
- 初始化cucumber
# 生成features文件结构
bundle exec calabash-ios gen
# 或者你也可以通过
bundle exec cucumber --init
上述两个命令生成的features目录是不相同的,但是不影响
- 执行cucumber
bundle exec cucumber
如果执行上述命令后,出现错误,那是因为cucumber不能找到你的xxx.app,你需要告诉cucumber可以从哪里找到你的xxx.app
Xcode默认构建的地址是:
~/Library/Developer/Xcode/DerivedData/<UDID>/Build/Products/Debug-iphonesimulator/<NAME>.app
你可以通过:
export ~/Library/Developer/Xcode/DerivedData/<UDID>/Build/Products/Debug-iphonesimulator/<NAME>.app
# 或者
export XCODEPROJ=../<NAME>.xcodeproj
# 开始执行
bundle exec cucumber
如何使用cucumber
在这里我以登录功能为例
- 创建一个Feature
- 生成step
首先根据你的feature生成step:
bundle exec cucumber -d <NAME>.feature
然后创建一个与你feature相关的step在steps目录下,如:loging_step.rb,生成的结果拷贝到文件中:
- 完善你的step
更多Calabash的用法请查阅Calabash官方网站