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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.3k
Musicアプリのトランジションを再現する
knagadou
3
2.8k
iPhoneX対応とScrollViewのcontentInset
knagadou
1
740
Other Decks in Programming
See All in Programming
Kotlinの15年とServer-Side Kotlin
n_takehata
1
190
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
130
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
280
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
690
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.6k
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
450
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
260
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
250
Event is what happens
moro
2
3.1k
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
290
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
200
Railsバージョンを4倍にした話
optim
0
920
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
880
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
470
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Joys of Absence: A Defence of Solitary Play
codingconduct
1
570
Done Done
chrislema
187
17k
Odyssey Design
rkendrick25
PRO
2
910
A Modern Web Designer's Workflow
chriscoyier
699
190k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
490
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
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