Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Swiftの単体テスト事情
Search
CyberAgent
PRO
June 03, 2024
Programming
0
26
Swiftの単体テスト事情
24卒のFlutter&iOSエンジニアです。現在WinTicketでFlutterエンジニアをしています。
CyberAgent
PRO
June 03, 2024
Tweet
Share
More Decks by CyberAgent
See All by CyberAgent
学園アイドルマスターの アイドルをより輝かせる ライティング手法
cyberagentdevelopers
PRO
1
12
スマートフォンGPUの特性を解析! 社内で実施予定のGPUパフォーマンスチューニング研修を紹介します!
cyberagentdevelopers
PRO
1
11
NAB Show 2024 動画技術関連レポート/ NAB Show 2024 Report
cyberagentdevelopers
PRO
3
300
CI/CDのススメ(サイバーエージェント新卒研修2024)
cyberagentdevelopers
PRO
1
59
Kubernetesのススメ(サイバーエージェント新卒研修2024)
cyberagentdevelopers
PRO
2
79
セキュリティ研修 〜テクニカルパート〜(サイバーエージェント新卒研修2024)
cyberagentdevelopers
PRO
5
1.5k
セキュリティ研修 〜マネジメントパート〜(サイバーエージェント新卒研修2024)
cyberagentdevelopers
PRO
3
320
Swift Student Challenge Distinguished Winnerに選出していただくまで
cyberagentdevelopers
PRO
1
36
総計30万DLの個人開発Flutterアプリを支えるiOSウィジェット機能
cyberagentdevelopers
PRO
0
42
Other Decks in Programming
See All in Programming
Vertical Architectures for Scalable Angular Applications
manfredsteyer
PRO
0
190
spaCy meets LLMs: Using Generative AI for Structured Data
inesmontani
PRO
1
550
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
750
Bottom-Up Architecture – Bridging the Achitecture Code Gap
olivergierke
3
130
過去や未来を扱うのは難しい? 過去と未来に立ち向かうための勘所
shinpeim
2
340
キッティングツールによる自動化でセットアップ時間を1時間から3分に短縮
mot_techtalk
2
100
ぎゃるえんじにあがハッカソンの虜になった!
rino7_tech
1
250
技術カンファレンスをより楽しむためにやるべき N 個のこと / N Things You Should Do to Enjoy Tech Conferences More
mackey0225
3
260
What new in Android Studio 2024.6
vast00
0
130
ゼロから始める型安全なGraphQL開発
shachi_daikon55
0
100
Ruby Function Composition
bkuhlmann
1
390
iOS 開発で便利なツールたち
mitsuharu
0
130
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
14
2.5k
How GitHub Uses GitHub to Build GitHub
holman
471
290k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
243
1.2M
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
21k
Mobile First: as difficult as doing things right
swwweet
218
8.7k
What's new in Ruby 2.0
geeforr
338
31k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Adopting Sorbet at Scale
ufuk
69
8.7k
RailsConf 2023
tenderlove
11
650
Dealing with People You Can't Stand - Big Design 2015
cassininazir
359
22k
What the flash - Photography Introduction
edds
64
11k
Transcript
Swift Testing CA.swift 5/30 naruogram
自己紹介 株式会社WinTicket 新卒入社 名前: なるお 技術: Flutter, Swift X: @naruogram
GitHub: @naruogram
はじめに
Swift Testingを調査した背景 - 研修メンバーに、Swift経験者がほとんどいなかった ため、直感的にテストを書きたいと思った - XCTestの学習コストが高い
目次 - Swift Testingについて - Swift Testing 特徴と活用
Swift Testingについて
Swift Testing Appleが発表したUnit Testライブラリ 強力で表現力豊かな機能を備えた、Swift 用の最新のオー プンソース テスト ライブラリです。(※公式説明より抜粋) ※
Swift5.9から対応 ※ Xcodeには統合されていない 参照元: https://github.com/apple/swift-testing
Swift Testing 特徴 - 柔軟で簡単 - カスタマイズ - 拡張性
Swift Testing 特徴と活用
Swift Testing 特徴1: 柔軟で簡単
Swift Testing 特徴1: 柔軟で簡単 テスト宣言したい場合: @Testを使用 テスト検証したい場合: #expectを使用
Swift Testing 特徴1: 柔軟で簡単 nilの場合にテストを失敗させたい場合: #requireを使用する requireがあることにより失敗の原因特定スピード向上します
Swift Testing 特徴1: 柔軟で簡単 テストのグループ化をしたい場合: @Suite
Swift Testing 特徴1: 柔軟で簡単 Concurrencyに関連するテスト XCTestと比較し、より簡単に記述が可能
Swift Testing 特徴2: カスタマイズ
Swift Testing 特徴2: カスタマイズ Traitsについて テストに特性を追加して注釈を付けたり、 動作をカスタマイズしたりします。
Swift Testing 特徴2: カスタマイズ Traitsを組み合わせることで柔軟なテストへ
Swift Testing 特徴2: カスタマイズ キャンペーンを実施している時のみ テストしたい場合
Swift Testing 特徴2: カスタマイズ Traitsの.enableを使用することで可能になる enableはif文を使ってテストの実行可否を決めれる
Swift Testing 特徴2: カスタマイズ CI等でテストが失敗した時に ログを残したい場合
Swift Testing 特徴2: カスタマイズ 失敗時のログに残すための表示方法
Swift Testing 特徴2: カスタマイズ 特定のバグをテストに関連付けたい場合
Swift Testing 特徴2: カスタマイズ Traitの.bugを使用し、関連付けをする。 明示的にバグで落ちてることがわかる
Swift Testing 特徴2: カスタマイズ Bug RelationShip種類 .uncoveredBug: バグが発見された時 .reproducesBug: 以前からのバグを実証する時
.verifiesFix: バグが修正され、バグが再現されない時 .failingBecauseOfBug: 無関係なバグが発生した時 .unspecified: その他
Swift Testing 特徴2: カスタマイズ 一時的に特定のテストを実行したくない場合
Swift Testing 特徴2: カスタマイズ テストの重要度を分類したい場合
Swift Testing 特徴2: カスタマイズ Traitのtagsを使用することで分類化 明示的にテストの重要度などを表現できる
Swift Testing 特徴3: 拡張性
Swift Testing 特徴3: 拡張性 引数のみを切り替えて テストを実行したい場合 (パラメタライズドテスト)
Swift Testing 特徴3: 拡張性 引数のみを切り替えて実行するテスト メリット: 1メソッドで多くのテストケースを 網羅できる ※ デフォルトでパラメタライズドテストの
機構が含まれている
Swift Testing まとめ - XCTestに比べて、より簡単にできる - 最近のSwiftの機能により順応している - Swift TestingはBetaなので、今後に期待
ありがとうございました!