6
7

More than 1 year has passed since last update.

【Swift×テスト自動実行】0からGithub Actions を使ってiOSアプリのテストコードを自動実行

Last updated at Posted at 2023-03-04

目的

GithubにPush(※1)したタイミングでのテストコード自動実行を行可能にする
※1 : 対象のPush先はmainブランチとします

対象としている人

  • ローカルのプロジェクトでSwiftを使いiOSアプリのテストコードを書いたことある人
  • テストを手動ではなく、自動で実行するためにはどうするのかな と思ってる人
  • Github Actions に興味あるけど触ったことない人

前提

  • XCodeでプロジェクトを作成している
    • プロジェクト名を UnitTestApp01 としておくと、本記事との整合性がとれます!
  • XCodeで作成したプロジェクトをGithubのリポジトリへPushしている
  • Swiftの構文をある程度理解している
    • class, func, return, let, var をいつ使うか理解できていればOKです
  • Git・Githubの操作をある程度理解している
    • ローカルリポジトリ, リモートリポジトリ, Add, Commit, Commit を理解できていればOKです

手順

① : テストコード作成 (←コードあり。コピペでOK)
② : Github Actions の設定
③ : 自動実行用のymlファイル作成
④ : 実行確認!

① : テストコード作成 (←コードあり。コピペでOK)

※ XCodeにてプロジェクトを作成している前提で話を進めます!

テストコードを書くためにはテスト対象のプログラムUnitTestsファイルが必要です。順番に作成していきます。

テスト対象のプログラム

今回は足し算を行うだけのプログラムを、テスト対象とします。
そのため、新しくSwiftファイル※2を作成して、以下のコードをコピペしましょう。
※2 : ファイル名 例:CalculationNumber.swift

CalculationNumber.swift
import Foundation

class CalculationNumber {
    // テスト対象の関数
    func Add(a: Int, b: Int) -> Int {
        return a + b
    }
}

UnitTestファイルの作成

XCodeで新プロジェクトを作成した段階で(設定次第では)、UnitTestのファイルが自動で作成されているはずです。
しかし、今回は、タイトルに0からと書いてある通り、UnitTestのファイル※3も0から作成していきます!

※3 : 例:CalculationNumberTests

@testable importでテストするモジュールを指定する。
今回は、テスト対象のモジュールを、作成したプロジェクト名とする。(例: UnitTestApp01)

UnitTests.swift
import XCTest
@testable import UnitTestApp01   // テスト対象のモジュールを指定, 今回は作成したプロジェクト名

final class CalculationNumberTests: XCTestCase {
    func test_足し算_成功() {
        let calculationNumber = CalculationNumber()   // 足し算を行うためにインスタンス化
        let answer = calculationNumber.Add(a: 10, b: 20)   // 足し算, answer = 30
        XCTAssertEqual(answer, 30)   // answer と 30 が等しいかテスト
    }
}

func test_足し算_成功() { の左にあるマークを押しましょう。
テストが実行されます。

以下のようにマークが、緑色になればテストに成功した証拠です。

③ : 自動実行用のymlファイル作成

ターミナルにてcdコマンドを使い、作成したプロジェクトのディレクトに入りましょう。

例.sh
cd /Users/~~~/Desktop/~~~UnitTestApp01

ディレクトリ内に.githubという隠しフォルダがないことを確認

例.sh
ls -al

.githubがない場合は以下のコマンドを打ち、Github Actions でのテスト自動実行用の.ymlファイルを作成し、.ymlファイルを開きましょう
※ .ymlファイルのディレクトリ構造 UnitTestApp01 > .github > workflow > UnitTests.yml
※ .ymlファイルのファイル名は任意

例.sh
mkdir .github
cd .github
mkdir workflows
cd workflows
touch UnitTests.yml
open UnitTests.yml

.ymlファイルが開かれたら以下のコードをコピペします。

UnitTests.yml

name: UnitTests

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: macOS-latest

    steps:
      - uses: actions/checkout@v2

      - uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: '14.1.0'

      - name: UnitTests
        run: xcodebuild test -project UnitTestApp01.xcodeproj -scheme UnitTestApp01 -sdk iphonesimulator -destination platform='iOS Simulator,name=iPhone 12,OS=16.1'

2023/03/04 土 時点
.ymlファイルで使用している構文についての説明は、追記予定

④ : 実行確認!

※ Git・Githubの操作をある程度理解していることを前提として話を進めます

変更点を add,commitして、Githubのリモートリポジトリへpushしましょう!

Pushして、GithubのActionタブを押すと、Github Actions を使ったテストコードの自動実行が行われていることを確認できます!!!

画面左のbuildボタンを押すと自動実行している項目のログを確認できます。
項目は、③ でymlファイルへ書いたものが反映されています。

テストに成功した場合、以下のように緑色がつきます!

以上です! 良いテストライフを

参考サイト

6
7
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
7