目的
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ファイルへ書いたものが反映されています。
テストに成功した場合、以下のように緑色がつきます!
以上です! 良いテストライフを
参考サイト