たけぞうBLOG

iOS,XCode,Cameraなど

iOSアプリ開発 Xcode4

CocoaPodでGHUnitをインストールする手順

投稿日:8月 7, 2013 更新日:

GHUnitをインストールして、XCodeでシンプルなテストケースを実行するまでの手順を整理してみました。このエントリーでは下記までを対象とします。

  • CocoaPodのインストールとセットアップ
  • GHUnitをXCodeで動作確認するためのサンプルプロジェクト作成
  • 簡単なテスト対象クラスの作成
  • GHUnitによる簡単なテストクラスの作成
  • iPhone Simulatorでの動作確認

GHUnitとは?

https://github.com/gabriel/gh-unit

公式サイトには下記のように説明されています。

GHUnit is a test framework for Mac OS X and iOS. It can be used standalone or with other testing frameworks like SenTestingKit or GTM.

Features

  • Run tests, breakpoint and interact directly with the XCode Debugger.
  • Run from the command line or via a Makefile.
  • Run tests in parallel.
  • Allow testing of UI components.
  • Capture and display test metrics.
  • Search and filter tests by keywords.
  • View logging by test case.
  • Show stack traces and useful debugging information.
  • Include as a framework in your projects
  • Determine whether views have changed (UI verification)
  • Quickly approve and record view changes
  • View image diff to see where views have changed

GHUnitはMacOSXとiOSのテストフレームワークです。スタンドアローンで使うこともできますし、SenTestingKitやGTMのようなテストフレームワークと一緒に使うこともできます。

機能

  • テスト、ブレイクポイント、XCode Debuggerとの直接対話による実行
  • コマンドラインもしくはMakefile経由での実行
  • 並列テストの実行
  • UIコンポーネントのテスト許可
  • テストメトリクスのキャプチャと表示
  • キーワードによるテストの検索とフィルター
  • テストケースのログ参照
  • スタックトレースとデバッグ情報の確認
  • プロジェクトのフレームワークとしての導入
  • Viewが変更されたかを検知可能(UI検証)
  • ビューの変更に対する迅速な検証と保存
  • ビューが変更した際の差分確認

1.CocoaPodsのインストール

早速インストールします。
筆者の環境はOSX 10.8.4です。Terminalからsudo gem install cocoapodsを実行し、続けてpod setupと入力してください。成功すると下記のようになります。

[plain]
$ sudo gem install cocoapods
$ pod setup

Setting up CocoaPods master repo
Updating a04552b..e3cd593
Fast-forward
ETFramework/1.0.7/ETFramework.podspec              | 19 +++++++
ISHTTPOperation/1.1.0/ISHTTPOperation.podspec      | 23 +++++++++
…/1.0/KLCircleViewController.podspec             | 12 +++++
MSSimpleGauge/0.5/MSSimpleGauge.podspec            | 14 ++++++
NUI/0.3.3/NUI.podspec                              | 16 ++++++
SHSegueBlocks/1.2.0/SHSegueBlocks.podspec          | 37 ++++++++++++++
SHUIKitBlocks/1.0.0/SHUIKitBlocks.podspec          | 57 +++++++++++++++++++++
SHUIKitBlocks/1.1.0/SHUIKitBlocks.podspec          | 58 ++++++++++++++++++++++
8 files changed, 236 insertions(+)
create mode 100644 ETFramework/1.0.7/ETFramework.podspec
create mode 100644 ISHTTPOperation/1.1.0/ISHTTPOperation.podspec
create mode 100644 KLCircleViewController/1.0/KLCircleViewController.podspec
create mode 100644 MSSimpleGauge/0.5/MSSimpleGauge.podspec
create mode 100644 NUI/0.3.3/NUI.podspec
create mode 100644 SHSegueBlocks/1.2.0/SHSegueBlocks.podspec
create mode 100644 SHUIKitBlocks/1.0.0/SHUIKitBlocks.podspec
create mode 100644 SHUIKitBlocks/1.1.0/SHUIKitBlocks.podspec
From https://github.com/CocoaPods/Specs
a04552b..e3cd593  master     -> origin/master
CocoaPods 0.23.0.rc1 is available.
Setup completed (read-only access)
[/plain]

以上でCocoaPodのインストールは完了です。

2.XCodeプロジェクトの作成

ここではサンプルとして\”UnitTestSample\”という名前のプロジェクトを作成します。

\"GH001\"

さらに\’Test\’というターゲットを追加します。

\"GH003_addTarget\"
テンプレートは\”Empty Application\”を選択します。
\"GH004_newTarget\"
Product Nameはここでは\”Tests\”と入力します。
\"GH005_tests\"
そしてTerminalアプリから、作成したプロジェクトにcdで移動してPodfileを作成します。

[plain]
$ cd UnitTestSample
$ vim Podfile
[/plain]

Podfileは下記のように編集してください。

[plain]
platform :ios, \’6.0\’
target :Tests do
pod \’GHUnitIOS\’, \’~> 0.5.5\’
end
[/plain]

Podfileを編集したら保存して、\’pod installを実行\’

[plain]
$ pod install
Analyzing dependencies

CocoaPods 0.23.0.rc1 is available.
Downloading dependencies
Installing GHUnitIOS (0.5.6)
/Library/Ruby/Gems/1.8/gems/cocoapods-0.22.3/lib/cocoapods/executable.rb:55: warning: Insecure world writable dir /Users/takeshi.kawai/Desktop/iOS in PATH, mode 040777
/Library/Ruby/Gems/1.8/gems/cocoapods-0.22.3/lib/cocoapods/executable.rb:55: warning: Insecure world writable dir /Users/takeshi.kawai/Desktop/iOS in PATH, mode 040777
/Library/Ruby/Gems/1.8/gems/cocoapods-0.22.3/lib/cocoapods/executable.rb:55: warning: Insecure world writable dir /Users/takeshi.kawai/Desktop/iOS in PATH, mode 040777
/Library/Ruby/Gems/1.8/gems/cocoapods-0.22.3/lib/cocoapods/executable.rb:55: warning: Insecure world writable dir /Users/takeshi.kawai/Desktop/iOS in PATH, mode 040777
/Library/Ruby/Gems/1.8/gems/cocoapods-0.22.3/lib/cocoapods/executable.rb:55: warning: Insecure world writable dir /Users/takeshi.kawai/Desktop/iOS in PATH, mode 040777
Generating Pods project
Integrating client project

[!] From now on use UnitTestSample.xcworkspace.
[/plain]

現在開いているUnitTestSample.xcodeprojを閉じて、UnitTestSample.xcworkspaceを開く
ターゲットを\”Tests\”に変更してBuildしてみる。
NavigationからTests>Supporting Files>main.mを開いて

[plain]
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class
[/plain]

を以下のように変更

[plain]
return UIApplicationMain(argc, argv, nil, @"GHUnitIOSAppDelegate")
[/plain]

Build&RunでSimulatorを下記のような画面が表示されればOKです。

 

3.テスト対象のクラスを作成

ここからは、実際にテストを行いたいクラスとしてCalcクラスを想定し、簡単なメソッドを1つ定義します。XCodeからCommand+NでNSObjectを継承するObjective-C Classを追加してください。

Calc.h編集

[plain]

import <Foundation/Foundation.h>

@interface Calc : NSObject
-(int)add:(int)a :(int)b;
@end
[/plain]

Calc.mを編集

[plain]

import "Calc.h"

@implementation Calc
-(int)add:(int)a :(int)b{
return a+b;
}
@end
[/plain]

4.テストクラスを作成

先ほど作成したCalcクラスのユニットテストを実装するため、今度はSampleTestCaseクラスを新規追加します。こちらはGHTestCaseクラスを継承するように設定してください。

[plain]

import <GHUnitIOS/GHUnit.h>

import "Calc.h"

@interface SampleTestCase : GHTestCase
@end
@implementation SampleTestCase
-(void)testCalc{
Calc *calc = [[Calc alloc] init];
int ans = [calc add:1 :2];
GHAssertEquals(3, ans, @"1+2");
}
@end
[/plain]

5.テスト実行

それでは、実際にテストを実行してみます。
XCodeのスキームを「Tests」に設定した状態でCommand+Rを押してください。

テストが成功した場合は下記のようになります。

\"GH012_TestSuccess\"
次はテストが失敗した場合の画面です。
\"GH011_TestFailure\"

ここまでのソースコードをgithubで公開しています。参考にしてください。

-iOSアプリ開発, Xcode4
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Xcode6のView Debugging使い方

View Debuggingとは? Xcode6の新機能で、iOSアプリ開発時のview階層を視覚的に確認できる機能のようです。 これまでview階層を視覚的に表示する手段がなかったので、このようなデ …

iPhoneアプリ開発でのキーチェーンアクセス設定

iPhoneアプリ開発でハマりやすいキーチェーンアクセスのチェックポイント

Xcode4ショートカット

よく使いそうなものだけピックアップ

Xcode5とXcode4のPreferenceの違い

XCode4からXCode5にアップデートされるにあたり、Preferenceでの設定項目がどのように変更されているのか調べました。

視力チェック サポートページ

ありがとうございます。 AppStore総合無料最高ランキング5位! すでに12万人以上の方にご利用頂いております。

プロフィール


1972年神奈川県生まれ。ソフトウェアエンジニアとして生きています。最近はクライアントアプリからサーバーサイドまで幅広くやってます。