iOS

【Swift】XCUITestでScrollViewのテストをしてみる

投稿日:2018年9月18日 更新日:

はじめに

こんにちは、suzukiです。
最近XCUITestを利用して既存のテスト内容の自動化したいと要望をいただきました。
XCUITestはあまり触れたことがないため調査の備忘もかねて、こちらで投稿させていただきます。
今回はテスト項目の最初にチュートリアルについてスワイプの動作のテストがあったため、そちらを自動化するつもりです。

XCUITestとは

XCodeが提供している、純正のUITestです。
導入方法はXCodeから簡単に可能です。

導入方法

新規作成のプロジェクトにXCUITestを追加する方法
新規プロジェクト作成時に表示される、プロジェクト名をつけるダイアログでInclude UI Testにチェックを入れましょう。

既存のプロジェクトにXCUITestを追加する方法
File>New>Targetを選択し表示されるダイアログから下記の二つのテストを追加
・iOS Unit Testing Bundle
・iOS UI Testing Bundle

オブジェクトの配置

オブジェクトの配置について

今回テストする項目
・ScrollView上のラベルが画面上に表示されているか
・Scrollが最後まで表示された画面で閉じるボタンが表示されているか

画面構成
・SCrollView
Paging ON
・BaseView
|-View * 4
|-ラベル
|-ボタン(最後のViewだけ)

UISCrollView

最初はScrollViewからテストの要素を取得予定でした。
Xcode-Version9.2ではAccessibilityの項目がないためScrollViewはStoryBoardでオートレイアウトの設定だけしています。

・UIScrollView
親のViewに対して上下左右0スペース
親のViewに対して縦・横の長さが等しい

・BaseView
SCrollViewの要素に対して上下左右0スペース

・子のView
BaseViewに対して上下を0スペース
UIScrollViewに対して縦・横の長さが等しい
隣の要素orBaseViewに対して左右0スペース

今回チュートリアルの設定を行うためPagingを忘れず設定してください。

ラベルとボタン

ラベル
・Accessibility Identifierを設定 *テストのための設定を参照
TutorialText0 ~ TutorialText3
・それぞれの画面中央に配置

ボタン
・Accessibility Identifierを設定
CloseButton
・ラベルの下の画面に配置

テストのための設定

XCUITestを利用するには目的のオブジェクトに対してAccessibility Identifierを設定する必要があります。
StoryBoardから設定するには
・オブジェクトを選択
・Identifier Inspectorを選択
・Accessibilityの項目のIdentifierに目的の名前を設定

ラベル

ラベルでは下記のような形です

こちらに設定した内容をもとにXCUITestから参照を行います。

テストコード

いよいよテスト用のコードを記述して行きます。
まずはセットアップのコードです。

SetUp

continueAfterFailure
テストで想定しないことが起きたときにテストを中断するか、続けて行うか設定できます。

XCUIApplication().launch()
テストを行うためにアプリケーションを起動します。

オブジェクトの取得

テスト対象のインスタンスAccessibility Identifierから取得します。
ラベルのインスタンス

ボタンのインスタンス

画面上に表示されているかの確認

ラベルやボタンなど現在の画面に表示されているかを確認します。
isHittableを利用し確認可能です。
今回のスクロールViewでは1ページ目に表示されているオブジェクトはtrueを返し
その他のオブジェクトはFalseを返却します。

スクロールを行う

ユーザーがスクロールを行った時の動作を設定します。
・左にスワイプ
swipeLeft()
・右にスワイプ
swipeRight()
上記を対象のオブジェクトを指定して呼び出します。

全体のテスト

上記をもとにそのまま作成してもいいのですが、コード量が増えてしまうので下記のようにしました。
テストコードがわかりずらいとメンテナンス性も下がります。
日本語で変数やテストの内容も記述可能なのでテストしている内容がわかりやすい名前をつけたいですね。

最後に

最後までありがとうございます。
ScrollViewのインスタンスが取得できなかったりと少し手間取りました。
XCUITestで確認できること、できないことがあるかと思います。
XCUITestで要件を満たせるものに関しては、積極的に利用していきたいですね。

また機会があれば通信周りの確認方法などもふれてみます。

RE:ENGINESブログ「iOS記事」まとめページはこちらから

参考サイト

http://tanaponchikidun.hatenablog.com/entry/2017/05/22/210735
https://qiita.com/hanawat/items/79bc81ed87704b15f3cd

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

iOS14を控えた今こそUINavigationBarAppearance

1 はじめに2 UINavigationBarAppearance2.1 タイトルのカスタマイズ2.2 背景のカスタマイズ2.3 UIBarButtonItemAppearance2.4 ボタンタイト ...

swift

Swift3 [XIBファイル] コードでの呼び出し方まとめ

1 はじめに1.1 前提条件2 TableViewCell2.1 XIBの準備2.2 ViewControllerでの呼び出し3 CollectionView3.1 XIBの準備3.2 ViewCon ...

iOS13ダークモード対応

1 はじめに2 一時しのぎ3 実装3.1 UI Element Colors3.2 Color Set3.3 コードで描きたい3.4 カスタムのカラーを定義する3.5 画像をモードで動的に変更したい4 ...

swift

[Swift4]UITextViewにプレースホルダをつける

1 はじめに1.1 前提条件2 実装3 さいごに はじめに こんにちは、nukkyです。 UITextFieldにはプレースホルダが標準で用意されていますが、UITextViewには用意されていません ...

swift

Swift ChartsライブラリとCryptowatchAPIでローソク足を描画してみる。

1 はじめに2 CryptoWatchについて2.1 OHLC3 リクエスト方法3.1 CryptoWatchのAPI3.2 Swiftでの実装方法4 さいごに5 おすすめ書籍 はじめに こんにちは鈴 ...

フォロー

blog-page_side_responsive

2018年9月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。