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
テスト実行時に 不要な初期化コードを実行しないようにする
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kNagadou
February 22, 2018
Programming
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト実行時に 不要な初期化コードを実行しないようにする
potatotips#48での発表スライドです
kNagadou
February 22, 2018
More Decks by kNagadou
See All by kNagadou
勇気を出して、Appleにバグレポートを出してみませんか?
knagadou
0
1.2k
Musicアプリのトランジションを再現する
knagadou
3
2.7k
iPhoneX対応とScrollViewのcontentInset
knagadou
1
740
Other Decks in Programming
See All in Programming
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
230
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
180
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
250
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
Claude Team Plan導入・ガイド
tk3fftk
0
250
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
130
Foundation Models frameworkで画像分析
ryodeveloper
1
510
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
210
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
640
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
How to make the Groovebox
asonas
2
2.3k
Test your architecture with Archunit
thirion
1
2.3k
Embracing the Ebb and Flow
colly
88
5.1k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Between Models and Reality
mayunak
4
380
Transcript
ςετ࣮ߦ࣌ʹ ෆཁͳॳظԽίʔυΛ࣮ߦ͠ ͳ͍Α͏ʹ͢Δ ,":"$ٕज़෦ ,B[VNBTB/"("%0 QPUBUPUJQT
ࣗݾհ w ,B[VNBTB/"("%0 w ,":"$ೖࣾϲ݄ w ʢʣ/1$+ϑΟδʔΫ ϊʔϏεΫϥεग़༧ఆ w 5XJUUFS!L[NTOHE
ϓϥίϨ ϓϥίϨ8FEEJOH IUUQTQMBDPMFXFEEJOH %SFTTZCZϓϥίϨ IUUQTESFTTZQMBDPMFXFEEJOH
ΞϓϦىಈ࣌ʹॳظσʔλΛߏங͢Δ͜ͱ͕͋Δ ྫʣςετ༻ͷϢʔβάϧʔϓ ڥݻ༗ͷม ֎෦4%,ͷηοτΞοϓ ͳͲ
ᶃΞϓϦͷॳظԽॲཧͳͲͰ.PEFMͷৼΔ͍͕มΘΒͳ͍Α͏ʹ͍ͨ͠ ॳظԽॲཧɺ"QQ%FMFHBUFʹॻ͘͜ͱ͕ଟ͍ɻ ςετ࣌"QQ%FMFHBUFͷॲཧΛ࣮ߦ͠ͳ͍Α͏ʹ͍ͨ͠
ᶄ7JFX7JFX$POUSPMMFSͷΠϯελϯεෆཁ σϑΥϧτͩͱɺ6OJUςετ࣌6*͕ϩʔυ͞ΕΔ .BJO*OUFSGBDFͷϩʔυίʔυͰͰ͖Δ
ᶅςετ༻ͷίʔυ͕"QQ%FMFHBUFʹଘࡏͯ͠͠·͏ let isRunningTest = ProcessInfo.processInfo.environment["XCInjectBundleInto"] != nil if isRunningTest {
// ςετ࣌ͷॳظԽॲཧ } else { // ϓϩμΫγϣϯ༻ͷॳظԽॲཧ } ςετ༻ͷॳظԽॲཧผͷॴʹ͚͍ͨ
ςετ͕࣮ߦ͞Ε͍ͯΔ͔ఆ ςετ࣮ߦ࣌5FTU"QQ%FMFHBUFΛ༻ɺͦ͏͡Όͳ͍ͳΒ "QQ%FMFHBUFΛ༻ .BJO*OUFSGBDFͷϩʔυɺϓϩμΫγϣϯ༻ͷ"QQ%FMFHBUFͰ ॲཧ ɹʢςετ༻ͷ5FTU"QQ%FMFHBUFɺ.BJO*OUFSGBDFΛϩʔυ͠ͳ͍ʣ ͱ͢Εྑͦ͞͏ɻ
<NBJOTXJGU> 5FTU"QQ%FMFHBUFͱ"QQ%FMFHBUFΛ͍͚ΒΕΔΑ͏ʹɺςετ࣮ߦఆΛ NBJOؔʹॻ͘ɻ 4XJGUͷNBJOؔͲ͜ʹ͋Δͷ͔ʁ ࣮ɺ҉తʹએݴ͞Ε͓ͯΓɺNBJOTXJGUΛϓϩδΣΫτʹՃ͢Δ͜ͱͰ NBJOؔతͳॲཧΛॻ͚Δɻ
import UIKit let isRunningTest = ProcessInfo.processInfo.environment["XCInjectBundleInto"] != nil let appDelegateClass
= isRunningTest ? NSStringFromClass(TestAppDelegate.self) : NSStringFromClass(AppDelegate.self) let args = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc)) UIApplicationMain(CommandLine.argc, args, nil, appDelegateClass) <NBJOTXJGU> NBJOTXJGUΛϓϩδΣΫτʹՃɻ ςετ࣮ߦதͳΒɺ5FTU"QQ%FMFHBUFΛUIApplicationMain(_,_,_,_)ͷҾ ʹ͢ॲཧΛॻ͘ɻ
<5FTU"QQ%FMFHBUFTXJGU> 5FTU"QQ%FMFHBUFɺͱΓ͋͑ͣॲཧͳ͠Ͱ0, import UIKit class TestAppDelegate: UIResponder, UIApplicationDelegate { }
<"QQ%FMFHBUFTXJGU> .BJO*OUFSGBDFΛϩʔυ͢ΔίʔυΛॻ͘ let storyboard = UIStoryboard(name: "Main", bundle: nil)
window = UIWindow() window?.rootViewController = storyboard.instantiateInitialViewController() window?.makeKeyAndVisible()
1SPKFDU(FOFSBM%FQMPZNFOU*OGPʹ͋Δ.BJO *OUFSGBDFΛϒϥϯΫʢۭനʣʹ͢Δɻ ·ͨɺJOGPQMJTUͷ6*.BJO4USPZCPBSE'JMFΛআɻ
<"QQ%FMFHBUFTXJGU> Εͣʹɺ"QQ%FMFHBUFTXJGU͔Β@UIApplicationMainΛআɻ ʢUIApplicationMain(_,_,_,_)ΛݺΜͰɺσϦήʔτΫϥεΛ͢ "UUSJCVUFʣ // @UIApplicationMain class AppDelegate: UIResponder,
UIApplicationDelegate {
·ͱΊ NBJOTXJGUͰςετ࣮ߦதͷఆΛͯ͠ɺ5FTU"QQ%FMFHBUFΛ͏ ςετ࣮ߦ࣌.BJO*OUFSGBDFϩʔυͨ͘͠ͳ͍ͷͰɺJOGPQMJTU͔Β আ ˠϓϩμΫγϣϯ༻ͷ"QQ%FMFHBUFͰϩʔυ͢ΔΑ͏ʹ͢Δ
͋Γ͕ͱ͏͍͟͝·ͨ͠
ςετ࣮ߦதͷఆํ๏ʹ͍ͭͯ let isRunningTest = ProcessInfo.processInfo.environment["XCInjectBundleInto"] ! = nil //
or let isRunningTest = NSClassFromString("XCTestCase") != nil
ͲͪΒͰఆͨ͠ํ͕Α͍͔ʁ • ProcessInfo.processInfo.environment[“XCInjectBundleInto"] xcodebuild test࣮ߦ࣌ʹඞͣଘࡏ͢Δڥม • NSClassFromString(“XCTestCase") XCTestCase͕ଘࡏ͠ͳ͍ڥͩͱɺਖ਼͘͠ఆͰ͖ͳ͍
ςετ͕ಋೖ͞Ε͍ͯͳ͍ΞϓϦΛϦϑΝΫλ ˣ .PEFMͷ6OJUςετΛॻ͘ ˣ ෆཁͳॳظԽίʔυΛ࣮ߦ͠ͳ͍Α͏ʹͨ͠
ࢀߟ <>'BLF"QQ%FMFHBUF'PS6OJU5FTUJOH*O4XJGU IUUQTNBSDPTBOUBEFWDPNGBLFBQQEFMFHBUFVOJUUFTUJOHTXJGU <>)PXUP&BTJMZ4XJUDI:PVS"QQ%FMFHBUFGPS5FTUJOH IUUQTRVBMJUZDPEJOHPSHBQQEFMFHBUFGPSUFTUT <>9DPEFͰςετ࣮ߦ࣌ʹ"QQ%FMFHBUFΛ͚Δ IUUQTRJJUBDPNLFZJUFNTEBCCFBFDE