branch10480’s blog

Topics that I've learned.

iOSアプリ開発自動テストの教科書 を読んでいく 〜 18 〜

UIテスト実装に向けて以下の手順について知る。 項目 UI要素の特定方法 UI要素の操作方法 UI要素の属性や状態の確認方法 UI要素の特定方法 XCUIElementQuery というクラスのクエリで対象となるUI要素(XCUIElement)を検索する。 import XCTest import UIKit…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 17 〜

UIテスト概要 XCUITest は XCTest の一部として存在している。UITest実装をサポートしてくれる機能としていかがある。 テストケースのレコーディング機能 テスト失敗時のスクリーンショット撮影 他にもUIテストとして使えるツールには以下が存在する。 名称 …

iOSアプリ開発自動テストの教科書 を読んでいく 〜 16 〜

HTTP通信のモック HTTPモックは外部のサーバの代わりにレスポンスを返すもの。APIクライアントの単体テストやUIテストで実際にサーバを利用するのが困難な場合に利用する。 Mockingjay ライブラリとしてソースコードの中に組み込むのに使用できるライブラリ…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 15 〜

フレームワーク Quick/Nimble Quick/Nimbleは XCTest 上で動く OSSのBDD(Behavior Driven Deployment)、Assertionフレームワーク。 BDDフレームワークとしての Quick、MatcherによるAssertionを実行する Nimble から成り立つ。 Quick とは BDDスタイルでテス…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 14 〜

モックの種類 名称 説明 モック 呼び出し結果などを記録する スタブ 任意の値を返すようにする スパイ 本物の処理を利用しつつ呼び出しなどの記録のみを行う 常に全てをモックかすべき? ケースバイケースである。状況によってはいくつかのクラスを結合して…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 13 〜

非同期なAPIのテスト - XCTestExpectation 非同期なAPIをテストする場合は、XCTestExpectationを用い、処理が完了するまで待機するのが一般的。 テスト対象のサンプルコード。 func echo(message: String, _ handler: @escaping (String) -> Void) { Dispatc…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 12 〜

テストを階層化する - XCTContext テストを階層化して表現したいと思った時に使えるのが、XCTContext.runActivity。 func safeDivision(_ x: Int, _ y: Int) -> Int? { if y == 0 { return nil } else { return x/y } } 上に対するテストが以下。 func testS…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 11 〜

独自のアサーションの作成 まずは不十分な実装を示す。 func asertEmpty(_ string: String) { // [A] XCTAssertTrue(string.isEmpty, "\"\(string)\" is not empty.") } 呼び出し部はこう。 func testAssertEmpty() { // [B] assertEmpty("test") } これを実…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 10 〜

アサーションについて 期待値 と 実際の値 を比較する専用のメソッドのことを アサーションメソッド もしくは単に アサーション と呼ぶ。 e.g. XCTAssertTrue(expr) expr は『式』を意味する expression の省略形。 等値性判定(Swift) XCTAssertEqual(Equa…

iOSアプリ開発自動テストの教科書 を読んでいく 〜 9 〜

XCTest framework について学ぶ XCTest framework は Apple 公式のテスティングフレームワーク。以下のテストについて実行可能。 単体テスト パフォーマンステスト UIテスト XCTest は単体テストを指す場合が多い。 サードパーティのOSSフレームワークとの比…