Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
テスト実行時に 不要な初期化コードを実行しないようにする
Search
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.8k
iPhoneX対応とScrollViewのcontentInset
knagadou
1
740
Other Decks in Programming
See All in Programming
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
Building an Out-of-Order CPU
latte72
1
790
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
420
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1k
Security issues being discussed on Web Platforms
petamoriken
0
970
SREの越境 / SRE Collaboration
y0hgi
2
240
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
150
一人だけ、Kiroが静止する日
hideg
0
120
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
250
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
170
スマート反転とウェブアクセシビリティ
camiha
0
210
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
The Invisible Side of Design
smashingmag
301
52k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Amusing Abliteration
ianozsvald
1
310
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
Marketing to machines
jonoalderson
1
5.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Optimizing for Happiness
mojombo
378
71k
Documentation Writing (for coders)
carmenintech
77
5.5k
How to Talk to Developers About Accessibility
jct
2
550
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