どらちゃんのポッケ

R・統計・技術メモなど勉強ログ置き場

CocoaPodsでGHUintを使えるようにするまで(xcode5)

CocoaPodsでGHUintを使えるようにするまで

以下のようなことを行ったメモ

  • 事前準備
    • CocoaPodsのインストール
  • プロジェクトの作成
  • PodFileの作成
  • 依存ライブラリのインストール(今回はGHUint)
  • GHUintの設定
  • GHUintのテストケースを作成
  • GHUintでテストの実行

CocoaPodsの導入

CocoaPodsとは

インストール

  • Ruby&gemのインストールと設定
    • CocoaPods自体をrubyのgemで落としてくるため、ruby&gemが必要
    • ただ、macrubyがプリインストールされているので、特に設定は不要だと思います。
      • rbenvをインストールする方がおすすめ。
  • CocoaPodsのインストール

      //ターミナルの作業
      gem install cocoapods
      pod setup
      pod --version     
          //バージョンが表示されればoK
          //私の環境では0.29.0
    

    プロジェクトの作成

  • 普通にxcodeを作成すればよい
  • 今回はsampleという名前のプロジェクトにした

GHUint用のターゲットの追加

  • ターゲットとは(イメージがついていないがこんな感じ?)

    • ターゲットごとに成果物が生成される?
    • 無料版と有料版アプリがあった場合に、共通したソースを使い回しやすくするためのもの?
  • GHUint用のターゲットを追加していく

f:id:sleeping_micchi:20140125205036p:plain

Empty Applicationにする

f:id:sleeping_micchi:20140125205059p:plain

f:id:sleeping_micchi:20140125205251p:plain

f:id:sleeping_micchi:20140125205223p:plain

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となっている

依存ライブラリのインストール

  • pod install の実行
  • ターミナルの作業
    • Podfileファイルとxcodeprojがある階層へcdして、コマンドをたたく
    • f:id:sleeping_micchi:20140125222330p:plain

    • ここでは後で使うGHUnitIOSをインストール

  • ターミナルにも書いてあるように、ここからは、xcworkspaceを使うこと!
    • 私はこれに気がつかず、1時間を損しました

GHUnitの設定

xcworkspaceを開く

  • ターミナルでopen xxx.xcworkspaceもしくは、Finderから起動する
  • 上のsampleが元々のプロジェクト、Podsがccoapodsでインストールされたもの
    • PodsにGHUnitIOSがインンストールされていることがわかる
    • f:id:sleeping_micchi:20140125223112p:plain

ライブラリの追加

  • sample project > Testターゲットに設定を行う
  • QuartzCore.frameworkの追加
    • General > Link Binary With Libralies(一番下)から検索して登録
  • GHUnitIOS.frameworkの追加
    • eneral > Link Binary With Libralies(一番下)からAdd Another…で登録
    • GHUnitIOSのパスで追加する(下記のディレクトリ)
      • f:id:sleeping_micchi:20140125222421p:plain

Bulid Settingの設定

  • other linker flagsで-ObjCを設定
    • デフォルトで入っている?

不要なファイルの削除

  • いらないファイル・フォルダを削除する
  • f:id:sleeping_micchi:20140125222438p:plain

ファイルを修正する

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

f:id:sleeping_micchi:20140125222554p:plain

テストコードを書いてく

  • Testファイルを生成する
    • Testターゲットにfileを作成する
      • GHTestを継承するように
    • GHTest.hは不要なので削除
  • ターゲットメンバシップの設定

    • 今回は、実際のクラスからオブジェクトを生成したりしないので、設定は不要だが、実際のコードでテストをすう場合には設定が必要
    • テストしたいファイルを選択して、右側のペインでターゲットメンバの指定
    • f:id:sleeping_micchi:20140125222619p:plain

  • GHTest.mにテストコードを書く

    • こんな感じ

        #import <GHUnit.h>
      
        @interface ghTest : GHTestCase
      
        @end
      
        @implementation ghTest
      
        - (void)testHogeFuga
        {
            GHAssertTrue(1 == 1, @"OK!");
        }
        @end
      

テストの実施

  • テストシュミレータを起動して、右上のRUNから実施
  • 成功したら黒字になる

f:id:sleeping_micchi:20140125222644p:plain

  • 失敗したら、赤字になる

f:id:sleeping_micchi:20140125222655p:plain

  • コンソールの結果も見れる

f:id:sleeping_micchi:20140125222713p:plain

  • テストできました
  • コマンドラインから実施もできるようだが、それはまた次回ということで。