iOSアプリ開発 Xcode4

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

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

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

機能

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
GH004_newTarget
GH005_tests


テンプレートは\"Empty Application\"を選択します。

Product Nameはここでは\"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で公開しています。参考にしてください。

Xcode 4 完全攻略 posted with ヨメレバ STUDIO SHIN ソフトバンククリエイティブ 2012-03-29    

  • この記事を書いた人

たけぞう

熊谷に住みながら都内のIT企業でエンジニアをしています。ガジェットやアウトドア用品についてレビューをしていきます。 趣味はスポーツジムでトレーニングやジョギングをすることです。

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