まずはビューのテストがどんなものか、ご紹介します。
- テストを走らせると以下のような画面がシミュレーターで起ち上がります。
- ビューのコードを修正しました。ビューのテストに失敗します。
- 該当の項目をタップすると、ビューが実際に描画されます。
- 縮小されているビューをタップすると、等倍で表示する事もできます。
- 「Diff」をタップすると、差分が表示されます。
- 「Approve this change」をタップして、新しいビューを正しいものとしましょう。
- するとテストは成功します。
- 生成された画像ファイルを所定の場所にコピーするシェルスクリプトを走らせて、もう一度テストをRunしてみると、新しいビューのテストにも成功します。
- 以上がビューのテストの流れになります。
で、環境の作り方なのですが、基本的に下記のページにしたがってやればできます。
以下は個人的に行き詰まったところ。
- 非ARCなプロジェクトに最新版のGHUnitを入れると動かない。プロパティの設定で「strong」とかやっているのが見えるので、どうもARCなプロジェクトである事を前提としている模様。仕方ないのでiOS4のために書かれたGHUnit 0.4.33を下記のページから引っぱってきて入れました。
- 導入するシェルスクリプトの中のパスの設定は、絶対パスにしました。最初に挙げたページでは下記のように書いている。
UI_TEST_IMAGES_DIR="$PWD/VerifyViewTipsTests/TestImages"
これだとカレント・ディレクトリが合ってないとうまく動かないので、下記のようにしてしまう。
UI_TEST_IMAGES_DIR="/Users/user_name/Documents/Project/Tests/TestImages"
- テストコードですが、以下のようにGHUnitフレームワークをimportしなければなりません。最初何をインポートしたら良いのかわかりませんでした。
SampleViewTest.h
#import <GHUnitIOS/GHUnit.h>
@interface SampleViewTest : GHViewTestCase
@end
-
よく考えたら当然なのですが、元のプロジェクトにある実装ファイルは、ターゲットを普通のビルドに加えてテストのビルドも追加しておかなければなりません。最初からすべての実装ファイルをテストビルドにもターゲットするのは、やってみましたが、あちこちでエラーが出て大変でした。とりあえずテスト対象となるファイルのみをテストビルドにターゲットするのが良いかなと思います。
-
画像が保存されないときは、コピーしたシェルスクリプトの中のパスの設定を確認しましょう。あと、私はPrepareUITests.shをテストターゲットではなく本プロジェクトターゲットの方に入れてしまい、あとで気づくのに時間がかかってしまいました。気をつけましょう。
ブログやってます:PAPA-tronix !