カテゴリー: TechiOS

【Swift】Xcode13XCTestの新機能、繰り返し実行で遊んでみた。

はじめに

こんにちは、suzukiです。とうとうiOS15がリリースされました。開発中のアプリをデバッグするためOSのアップデートをすぐ行ったのですが、Safariのレイアウトが大きく変わりびっくりしました。
今回はiOS15と同時に正式版のリリースされたXcode13のXCTestの新機能である連続実行について触れていきたいと思います。

XCTestについて

Xcodeでデフォルトで利用できるテストツールです。unitのテストの利用によく使われます。
Xcode13では新機能がいくつかリリースノートのTestingの項目にあります。

繰り返しのテストについて

繰り返しのテストは3種類あります。
・テストの実行回数を指定して繰り返し行う
・テストが失敗するまで実行回数を指定して繰り返し行う
・テストが成功するまで実行回数を指定して繰り返し行う
単純なリトライ、失敗するが稀なテストケース、成功するのが稀なテストケース、それぞれを繰り返すことができるようになりました。

実際に使ってみる

リリースノートの説明を読んでも、あまりよくわからなかったので、実際に使ってみようと思います。
新規にプロジェクトを作成する場合はinclude Testsにチェックを入れて始めましょう。以前はデフォルトでチェックされていたのですが、新しくインストールしたせいか、デフォルトのチェック外れてました。

その他もろもろ入力しプロジェクトを作成します。下記のようにプロジェクト名+Testsというフォルダが作られているとXCTestが利用できます。。

何気に初めて正式版のXcode13でプロジェクト作成しました。アイコン関係の変更が目立ちますね。あと拡張子が表示されなくなったのがなんとなく違和感あります。

今回触っていくのは、下記のファイルです。

テストコードについて

それではテストコードを実際に書いてみましょう。
・1/319.9で成功するテストを成功するまで繰り返し
・1/9.2を6回行うまで繰り返し
・81/100を失敗するまで繰り返し

    //1/319.9の大当たりをゲットするまで
    func testGetBonus() throws {
        let randomInt = Int.random(in: 1..<3120)
        XCTAssertTrue(randomInt<11)
    }
    //ラッシュ突入確率
    func testGetRush() throws {
        let randomInt = Int.random(in: 1..<93)
        XCTAssertTrue(randomInt<11)
    }
    //ラッシュ継続確率
    func testBackNormal() throws {
        let randomInt = Int.random(in: 1..<101)
        XCTAssertTrue(randomInt<82)
    }

テストの設定

それではtestGetBonusを繰り返し実行してみます
スクショの▶️の箇所をctr押しながら選択しましょう。

下記のrepeatedlyを選択し

Successをチェックし最大値はひとまず999として実行

今回は501回目に成功しました。

Successのチェックを変更することで失敗・最大値までなどのテストが可能です。

さいごに

今回は繰り返し行い、成功したり失敗したりということでパチンコの確率を利用してみました。
繰り返すことで成功したりしなかったりという期待値になる単体テストはあまり考えてこなかったですが、ランダム要素のテストとかには使えるのかなと思いました。
テスト結果はしょうもないことになったため割愛します。早くコロナ明けて気兼ねなく外出できるようになるといいですね。

おすすめ書籍

suzuki

シェア
執筆者:
suzuki
タグ: Swift

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前