6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GHUnitでiOSアプリのビューをテストするには(紹介と個人的な補足)

Last updated at Posted at 2013-07-22

まずはビューのテストがどんなものか、ご紹介します。

  1. テストを走らせると以下のような画面がシミュレーターで起ち上がります。

名称未設定.png

  1. ビューのコードを修正しました。ビューのテストに失敗します。

名称未設定 2.png

  1. 該当の項目をタップすると、ビューが実際に描画されます。

名称未設定 3.png

  1. 縮小されているビューをタップすると、等倍で表示する事もできます。

名称未設定 4.png

  1. 「Diff」をタップすると、差分が表示されます。

名称未設定 5.png

  1. 「Approve this change」をタップして、新しいビューを正しいものとしましょう。

名称未設定 3.png

  1. するとテストは成功します。

名称未設定 6.png

  1. 生成された画像ファイルを所定の場所にコピーするシェルスクリプトを走らせて、もう一度テストをRunしてみると、新しいビューのテストにも成功します。

名称未設定 7.png

  1. 以上がビューのテストの流れになります。

で、環境の作り方なのですが、基本的に下記のページにしたがってやればできます。

以下は個人的に行き詰まったところ。

  • 非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 !

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?