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
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
610
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
高専キャリア LT 発表内容
crysta1221
6
5.7k
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
AIエージェント時代のコードレビューを設計する
nogu66
6
2.6k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
670
Family mrubyの進捗
kishima
1
110
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
140
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
590
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Deep Space Network (abreviated)
tonyrice
0
300
The Spectacular Lies of Maps
axbom
PRO
1
990
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
490
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
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