QuickというSwift, Objective-C用のテスティングフレームワークを使ったテストをfastlaneで流してみる。
とりあえずSingle View Application で QuickSample
というプロジェクトを作成する。
プロジェクト配下に移動して、以下の内容でPodfile
を作成する。
一応Swiftのバージョンを指定している。
Podfile
use_frameworks!
swift_version = '3.0'
def testing_pods
pod 'Quick'
pod 'Nimble'
end
target 'QuickSampleTests' do
testing_pods
end
target 'QuickSampleUITests' do
testing_pods
end
Cocoapodsで依存ライブラリをインストールする。
$ pod install
[!] The `QuickSampleTests [Debug]` target overrides the
`ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target
Support Files/Pods-QuickSampleTests/Pods-QuickSampleTests.debug.xcconfig'. This
can lead to problems with the CocoaPods installation
とか出ても一旦放っておく。
直す場合は、ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
で検索かけて、設定を$(inherited)
にすれば良い。
include Unit Tests
でプロジェクトを作ったので、XCTest
版のテストクラスが用意されている。
今回はそれをリネームしてQuick
で書いていくことにする。
QuickSampleTests.swift
→ `QuickSampleSpec.swift
とりあえずこんな感じで雑に書いて動かしてみる。
import Quick
import Nimble
@testable import QuickSample
class QuickSampleSpec: QuickSpec {
override func spec() {
describe("ほげほげの場合") {
it("こうなる") {
expect("A").to(equal("A"))
}
}
}
}
とりあえずXcode上では動いた
fastlaneで実行
インストール
$ gem install fastlane
初期化
$ fastlane init
以下のようなエラーが出た
No teams available on the Developer Portal
You must accept an invitation to a team for it to be available
To learn more about teams and how to use them visit https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ManagingYourTeam/ManagingYourTeam.html
[07:48:42]: Your account is in no teams
[07:48:42]: An error occured during the setup process. Falling back to manual setup!
どうやらDeveloper Programに登録しないとダメっぽい? (必要ないよ!って場合はコメントください!!)
ので、Appleにお布施して
お布施〜 pic.twitter.com/TIqqYpz2aQ
— てんてん (@tenten0213) 2016年11月3日
再度initしてやると成功した。
$ fastlane init
初期化した状態でとりあえずテストできそうだったからテストしてみる。
$ fastlane test
シミュレータ立ち上がったりして、結構時間がかかる。
ちゃんと、書いたテストが動作した!
htmlとjunit形式のレポートが出るみたい。
Jenkinsとかでも扱いやすくて良い。
<?xml version='1.0' encoding='UTF-8'?>
<testsuites name='QuickSampleTests.xctest' tests='2' failures='0'>
<testsuite name='QuickSampleUITests.QuickSampleUITests' tests='1' failures='0'>
<testcase classname='QuickSampleUITests.QuickSampleUITests' name='testExample' time='6.398'/>
</testsuite>
<testsuite name='QuickSampleTests.QuickSampleSpec' tests='1' failures='0'>
<testcase classname='QuickSampleTests.QuickSampleSpec' name='ほげほげの場合__こうなる' time='0.006'/>
</testsuite>
</testsuites>
HTMLの方は若干ダサいけど、まぁよし。
Quickやfastlaneの詳細な使い方は今後しらべないと