Your SlideShare is downloading. ×
テストフィクスチャTips(主にCoreData) #potatotips
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

テストフィクスチャTips(主にCoreData) #potatotips

1,602
views

Published on

potatotips#5 at COOKPAD …

potatotips#5 at COOKPAD
LT


0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,602
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. テストフィクスチャTips (主にCoreData) 2014.03.12 potatotips#5 at COOKPAD @nowsprinting/Koji Hasegawa 14年3月13日木曜日
  • 2. 自己紹介 • @nowsprinting/Koji Hasegawa • フリーランス (iOS/Androidアプリ受託開発) • テスト自動化研究会、Androidテスト部 • 著書『Androidアプリテスト技法』(共著) 『iOSアプリ テスト自動化入門』3.18発売 14年3月13日木曜日
  • 3. 都内の大きな書店では 今週末から並ぶかも? 3.18 発売! 14年3月13日木曜日
  • 4. Agenda • テストフィクスチャとは • CoreDataをインメモリストアで使用する • アプリケーションデータを再現してテスト 実行する 14年3月13日木曜日
  • 5. テストフィクスチャとは 14年3月13日木曜日
  • 6. テストフィクスチャとは • テスト実行環境、前提条件の集合 • コンテキスト • [setUp]やテストメソッドの中で整え、 [tearDown]でクリアする • テストの再現性、独立性を確保 14年3月13日木曜日
  • 7. 再現性 • そのテストケースを何度実行しても、 いつ実行しても検証結果が変わらない 独立性 • 他のテストケースの実行結果に依存し ない 14年3月13日木曜日
  • 8. CoreDataをインメモリ ストアで使用する 14年3月13日木曜日
  • 9. インメモリストアとは • アプリインストール先のストレージでは なく、メモリ上にDBを作る • テスト実行ごとに、常に空のDBを得る ことができる • I/Oが発生しないので高速(のはず) 14年3月13日木曜日
  • 10. CoreDataの初期化 - (void)setUp { NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"YourModelName" withExtension:@"momd"]; _model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; _coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model]; NSString *docpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) lastObject]; NSURL *storeURL = [NSURL fileURLWithPath:[docpath stringByAppendingPathComponent: @"YourModelName.sqlite"]]; _store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:NULL]; _context = [[NSManagedObjectContext alloc] init]; _context.persistentStoreCoordinator = _coordinator; } 14年3月13日木曜日
  • 11. インメモリストアを使う _store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:NULL]; _store = [_coordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:NULL]; 14年3月13日木曜日
  • 12. アプリケーション データを再現して テスト実行する 14年3月13日木曜日
  • 13. • 実際にアプリを操作して得られたアプリ ケーションデータを保存し、テスト実行 ごとに再現する • 大量データや、DBのマイグレーションの テストなどで有効 14年3月13日木曜日
  • 14. 実機のデータを取り出す ※iOSシミュレータではFinderで取り出すことができます 拡張子”.xcappdata”ファイルとして保存 14年3月13日木曜日
  • 15. データを設定して実行 Scheme設定画面でxcappdataを設定 14年3月13日木曜日
  • 16. その他、フィクスチャ系 • テストフィクスチャをファイルで バンドルする • NSUserDefaultsをクリアする 方法が『iOSアプリ テスト自動化入門』 には書いてあります 14年3月13日木曜日
  • 17. 14年3月13日木曜日