スキップしてメイン コンテンツに移動

Objective-CでUnit Test

XCodeにはUnit TestのFrameworkであるSenTestingKitが添付されている。SenTestingKitでのテスト方法を簡単にまとめておく。

以下のようなクラス Circleがあった場合、

#import <Cocoa/Cocoa.h>#define PI (double)3.14159
@interface Circle : NSObject {
double _radius;
}
+(id)circleWithRadius: (double) raidus;
-(id)initWithRadius:(double)radius;
-(double)diameter;
-(double)dimension;
-(double)circumference;
@property(readwrite) double radius;
@end

まず、テスト用の新規ターゲットを作成する。このときアシスタントで「Cocoa」のカテゴリーから「Unit Test Budle」を選択しておく。名前は何でもよい"TestCircle"などとしておく。

次にFrameworkの取り込みを行う。
Frameworkの定義は、/Developer/Libary/Frameworks/SenTestingKit.frameworkにあるのでこれをプロジェクトに追加する。ここで、先に作成した新規ターゲット"TestCircle”に追加する。

そしていよいよテスト用のコードの追加。
新規ファイルをプロジェクトに作成し、ファイルの種類を「Objective-C test case class」を選択する。ヘッダーフィアルを見るとSenTestingKitのヘッダーのインポートとクラスのテンプレートができているので、ここにテストしたいクラスのインスタンスとテスト用のメソッドを定義しておく。

#import <SenTestingKit/SenTestingKit.h>
#import "Circle.h"

@interface CircleTest : SenTestCase {
Circle* circle;
}
-(void)testDiameterValue;
-(void)testCicumference;
-(void)testDimension;
@end

これらのメソッドのほかにSenTestCaseで定義されているsetUpとtearDownの2つのメソッドを通常はオーバーライドする。それぞれ初期化とテスト終了時の後始末を担うメソッド。その他のテスト用のメソッドに関しては、メソッド名を「test」で始めること。

テスト用メソッドでの確認方法は、SenTestingKitが提供するチェック用の関数を使って以下のように実施する。

-(void)testDimension {
STAssertEquals([circle dimension],(30 * 30 * PI),nil,NULL);
}

この関数では最初の引数と2番目の引数が正しくなければエラーとなる。その他いくつかの関数が定義されているのでそれらを使用してクラスのテストケースとその結果をチェックするロジックを作成する。

これらのチェックはビルド時に行われる。チェックするにはアクティブターゲットをテスト用に作成したターゲット(ここではTestCircle)を指定してビルドする。結果が正しければ何事もなくビルドは完了する。エラーがあれば、ビルドの後以下のようにコンパイルのエラーと同様に表示される。

Download

コメント

このブログの人気の投稿

リピート

Appling 2ndの『リピート』 の記事を読んで、面白そうだったので買って読んでみた。 リピート posted with amazlet on 07.04.01 乾 くるみ 文藝春秋 (2004/10/23) 売り上げランキング: 194098 Amazon.co.jp で詳細を見る そもそもタイムスリップものは好きなジャンルであることと、そのタイトルと紹介されていたストーリーから大好きなケン・グリムウッドの『リプレイ』を連想したからだ。実際、作品の中でも時間を繰り返すタイムスリップを突きつけられた時主人公達はケン・グリムウッドの『リプレイ』を引き合いに出して議論を行う場面もあるので、作者がリプレイを意識しているのは確実だろう。 タイムスリップ物というSF的な文法を使いながら、うまくミステリーの要素を融合させ、ちょっぴり恋愛物のスパイスも利かせてうまい具合にまとまった作品になっている。たまたま今回は筋が読めてしまって「やっぱり」って感じもしたが、一般的には二つの要素がかみ合ってうまく最後まで読者を惹きつけるだろう。 帯には" 『リプレイ』+『そして誰もいなくなった』 "などと銘打ってある。確かに楽しめる作品であるが、ちょっと言いすぎかな。『リプレイ』のオマージュと考えると、以下の点で物足りなさを感じる。 リプレイ(リピート)の期間が短い 『リプレイ』では25年だったリプレイの期間がわずか10ヶ月を遡るだけ。このことで「人生を繰り返す」といっても重みが違ってきている。しかも描かれるのはそのあるサイクルだけだ。 描写される時代 『リプレイ』では自信を失っていた80年代のアメリカから良き時代の60年代、70年代がリプレイで描かれるところが大きな魅力になっている。一方『リピート』では振幅が短いためリピート自体にそういった効果はないが、何故かそもそもの設定は91年となっていて中途半端に懐かしい。 主人公が嫌なヤツ 最初は好青年っぽいがだんだん嫌な面が描かれていく。物語は一人称で綴られているが主人公がそんな状態であるため、読み手としては感情移入がし難い。 とはいえ、結構な長編だが一日で一気に読んでしまったほど面白い。

PaSoRi

Auの携帯 W41CAではFelica関連のアプリケーションをいくつか使っていたので、nineに移行するとこまるのではと思い、SonyのFelicaのリーダー/ライターであるPaSoRiを購入。 以前は「なんでこんなものお金払ってまで」と思ったものだが、実際にEdyを使うのに慣れてしまうと財布の出し入れなく買い物できたり、小銭をジャラジャラ持って歩かなくて済むメリットは大きい。オフィスにTallysが入っていて毎朝ここでコーヒーを買うのにもEdyを使っているので実感している。 携帯のEdyアプリだと残高やチャージがその場でできるが、カードだとお店に行かないとこういったことができないのはやはり不便だ。 SONY RC-S320 非接触ICカードリーダ/ライタ PaSoRi 「パソリ」 posted with amazlet on 07.05.20 ソニー 売り上げランキング: 15 Amazon.co.jp で詳細を見る Windows専用だがドライバとそれぞれのカードのアプリケーションが附属するので簡単に使用を開始できる。Edyのビューアーはバージョンアップしており最初の起動で最新バージョンを再導入するように促される。使用履歴や残額はその場で確認でいる。チャージはサービス登録をして手続きが完了するのに2日ほどかかるが、これもアプリケーションからオンラインで登録できる。カードは以前作ったANAのマイレージクラブのカードがあったので早速登録。 Macでは正式なサポートはない。 しかし、オープンソースで開発されている LibPaSori を利用したいくつかのアプリケーションがあり、例えば EdyValue データの読み出しだけならば可能となる。

隠された想い

あり得ない…… yostosには、『たまにでいいから相手して』という意味が込められています。 http://shindanmaker.com/69604 引用元: あなたのIDにはあなたの想いが隠されていたー