Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

  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. 以上がビューのテストの流れになります。

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

http://yaakaito.hatenablog.com/entry/2012/07/10/133038

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

  • 非ARCなプロジェクトに最新版のGHUnitを入れると動かない。プロパティの設定で「strong」とかやっているのが見えるので、どうもARCなプロジェクトである事を前提としている模様。仕方ないのでiOS4のために書かれたGHUnit 0.4.33を下記のページから引っぱってきて入れました。

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

  • 導入するシェルスクリプトの中のパスの設定は、絶対パスにしました。最初に挙げたページでは下記のように書いている。
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 !

Feel-Physics
今はHoloLensのアプリを開発しており、技術記事はすべてブログ( http://weed.nagoya )に書いています。以前はSwift、OpenCV+Python、JavaScript、Objective-Cを書いていました。
http://feel-physics.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away