CocoaPodsでGHUintを使えるようにするまで(xcode5)
CocoaPodsでGHUintを使えるようにするまで
以下のようなことを行ったメモ
- 事前準備
- CocoaPodsのインストール
- プロジェクトの作成
- PodFileの作成
- 依存ライブラリのインストール(今回はGHUint)
- GHUintの設定
- GHUintのテストケースを作成
- GHUintでテストの実行
CocoaPodsの導入
CocoaPodsとは
- ios/mac開発のライブラリ管理のためのモジュール。Rubyでいうgem,Nodeでいうnpmとか。
- 公式サイト:http://cocoapods.org/
インストール
- Ruby&gemのインストールと設定
CocoaPodsのインストール
//ターミナルの作業 gem install cocoapods pod setup pod --version //バージョンが表示されればoK //私の環境では0.29.0
プロジェクトの作成
- 普通にxcodeを作成すればよい
- 今回はsampleという名前のプロジェクトにした
GHUint用のターゲットの追加
ターゲットとは(イメージがついていないがこんな感じ?)
- ターゲットごとに成果物が生成される?
- 無料版と有料版アプリがあった場合に、共通したソースを使い回しやすくするためのもの?
GHUint用のターゲットを追加していく
Empty Applicationにする
Testターゲットが追加された
- xcodeをいったん閉じる
Podfileファイル作成
- 使用するライブラリの管理はPodfileに記述し、管理をする
- プロジェクトフォルダの直下にPodfileファイル作成
- xcodeprojと同じ配置することになる
- 今回はGHUnitIOSをインストールするようにする
Podfileの内容を記述
platform :ios, '7.0' target :Test, :exclusive => true do pod 'GHUnitIOS', '~> 0.5.5' end
- targetはプロジェクト全体でなく、一部分に適応したい場合に記述
- GHUint用のターゲットの名前をTestとしたため、
target :Test
となっている
- GHUint用のターゲットの名前をTestとしたため、
- targetはプロジェクト全体でなく、一部分に適応したい場合に記述
- プロジェクトフォルダの直下にPodfileファイル作成
依存ライブラリのインストール
- pod install の実行
- ターミナルの作業
- Podfileファイルとxcodeprojがある階層へcdして、コマンドをたたく
ここでは後で使うGHUnitIOSをインストール
- ターミナルにも書いてあるように、ここからは、xcworkspaceを使うこと!
- 私はこれに気がつかず、1時間を損しました
GHUnitの設定
- 公式サイト
- 導入方法
- OCUnitはロジック部分のテストを行うことしかできないが、GHUnitでは非同期やUIViewのテストもできるらしい。
- mixiさんのページ
xcworkspaceを開く
- ターミナルで
open xxx.xcworkspace
もしくは、Finderから起動する - 上のsampleが元々のプロジェクト、Podsがccoapodsでインストールされたもの
- PodsにGHUnitIOSがインンストールされていることがわかる
ライブラリの追加
- sample project > Testターゲットに設定を行う
- QuartzCore.frameworkの追加
- General > Link Binary With Libralies(一番下)から検索して登録
- GHUnitIOS.frameworkの追加
- eneral > Link Binary With Libralies(一番下)からAdd Another…で登録
- GHUnitIOSのパスで追加する(下記のディレクトリ)
Bulid Settingの設定
- other linker flagsで
-ObjC
を設定- デフォルトで入っている?
不要なファイルの削除
- いらないファイル・フォルダを削除する
ファイルを修正する
Test > SupportingFiles > main.m を修正する
- 引数の
NSStringFromClass([AppDelegate class])
を@"GHUnitIOSAppDelegate"
に変える #import "AppDelegate.h"
を削除する修正後のファイルはこんな感じ
#import <UIKit/UIKit.h> int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil,@"GHUnitIOSAppDelegate" ); } }
起動確認
- Testターゲットでシュミレータを起動
- この画面がでればOK
テストコードを書いてく
- Testファイルを生成する
- Testターゲットにfileを作成する
- GHTestを継承するように
GHTest.h
は不要なので削除
- Testターゲットにfileを作成する
ターゲットメンバシップの設定
- 今回は、実際のクラスからオブジェクトを生成したりしないので、設定は不要だが、実際のコードでテストをすう場合には設定が必要
- テストしたいファイルを選択して、右側のペインでターゲットメンバの指定
GHTest.mにテストコードを書く
こんな感じ
#import <GHUnit.h> @interface ghTest : GHTestCase @end @implementation ghTest - (void)testHogeFuga { GHAssertTrue(1 == 1, @"OK!"); } @end
テストの実施
- テストシュミレータを起動して、右上のRUNから実施
- 成功したら黒字になる
- 失敗したら、赤字になる
- コンソールの結果も見れる
- テストできました
- コマンドラインから実施もできるようだが、それはまた次回ということで。