目的
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
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)
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
コマンドを使い、作成したプロジェクトのディレクトに入りましょう。
cd /Users/~~~/Desktop/~~~UnitTestApp01
ディレクトリ内に.github
という隠しフォルダがない
ことを確認
ls -al
.githubがない場合は以下のコマンドを打ち、Github Actions でのテスト自動実行用の.ymlファイル
を作成し、.ymlファイルを開きましょう
※ .ymlファイルのディレクトリ構造 UnitTestApp01 > .github > workflow > UnitTests.yml
※ .ymlファイルのファイル名は任意
mkdir .github
cd .github
mkdir workflows
cd workflows
touch UnitTests.yml
open UnitTests.yml
.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ファイルへ書いたものが反映されています。
テストに成功した場合、以下のように緑色がつきます!
以上です! 良いテストライフを
参考サイト