Quickをfastlaneから実行してテストする

![Quick](https://camo.githubusercontent.com/bcd71a03c67bd89a4cfc390c7c22cc4f06db91b1/687474703a2f2f662e636c2e6c792f6974656d732f30723145313932433152306232673251336832772f517569636b4c6f676f5f436f6c6f722e706e67)

[Quick](https://github.com/Quick/Quick)というSwift, Objective-C用のテスティングフレームワークを使ったテストを[fastlane](https://github.com/fastlane/fastlane)で流してみる。

とりあえずSingle View Application で `QuickSample` というプロジェクトを作成する。

![スクリーンショット 2016-10-31 18.33.35.png](https://qiita-image-store.s3.amazonaws.com/0/6092/89998589-53a2-d70d-2298-62086b2cfdbd.png)

![スクリーンショット 2016-10-31 18.55.17.png](https://qiita-image-store.s3.amazonaws.com/0/6092/79799d7a-f710-09c9-9ad0-43b9ffb3c6cb.png)

プロジェクト配下に移動して、以下の内容で`Podfile`を作成する。
一応Swiftのバージョンを指定している。

```yaml:Podfile
 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で依存ライブラリをインストールする。

```bash
$ 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

とりあえずこんな感じで雑に書いて動かしてみる。

```swift
import Quick
import Nimble
@testable import QuickSample

class QuickSampleSpec: QuickSpec {
    override func spec() {
        describe("ほげほげの場合") {
            it("こうなる") {
                expect("A").to(equal("A"))
            }
        }
    }
    
}
```

とりあえずXcode上では動いた:thumbsup:

![スクリーンショット 2016-11-02 20.07.06.png](https://qiita-image-store.s3.amazonaws.com/0/6092/190e4a89-9c48-7ab6-5f7a-5cdd5b937f05.png)

## fastlaneで実行

![fastlane](https://github.com/fastlane/fastlane/blob/master/fastlane/assets/fastlane_text.png?raw=true)

インストール

```bash
$ gem install fastlane
```

初期化

```bash
$ fastlane init
```

以下のようなエラーが出た:fearful:

```bash
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に登録しないとダメっぽい？:thinking: (必要ないよ！って場合はコメントください！！)

ので、Appleにお布施して:dollar:

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">お布施〜 <a href="https://t.co/TIqqYpz2aQ">pic.twitter.com/TIqqYpz2aQ</a></p>&mdash; てんてん (@tenten0213) <a href="https://twitter.com/tenten0213/status/794317697462849536">2016年11月3日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

再度initしてやると成功した。

```bash
$ fastlane init
```

![1__tenten0213_tentenMBA____QuickSample__zsh_.png](https://qiita-image-store.s3.amazonaws.com/0/6092/d4f8b2b6-42f5-2bc7-946a-3d5a178f69af.png)

初期化した状態でとりあえずテストできそうだったからテストしてみる。

```bash
$ fastlane test
```

シミュレータ立ち上がったりして、結構時間がかかる。

ちゃんと、書いたテストが動作した！:relaxed:

![1__tenten0213_tentenMBA____QuickSample__zsh_.png](https://qiita-image-store.s3.amazonaws.com/0/6092/717caac5-2305-df9b-ba1c-4512352e28d3.png)

htmlとjunit形式のレポートが出るみたい。
Jenkinsとかでも扱いやすくて良い。

```xml
<?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の方は若干ダサいけど、まぁよし。

![Test_Results___xcpretty.png](https://qiita-image-store.s3.amazonaws.com/0/6092/b71d50de-61ef-fd28-7f71-d0b3f1c6c94d.png)

Quickやfastlaneの詳細な使い方は今後しらべないと:muscle: