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

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

2,370 views

Published on

potatotips#5 at COOKPAD
LT

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

No Downloads
Views
Total views
2,370
On SlideShare
0
From Embeds
0
Number of Embeds
1,379
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. テストフィクスチャTips (主にCoreData) 2014.03.12 potatotips#5 at COOKPAD @nowsprinting/Koji Hasegawa 14年3月13日木曜日
  2. 2. 自己紹介 • @nowsprinting/Koji Hasegawa • フリーランス (iOS/Androidアプリ受託開発) • テスト自動化研究会、Androidテスト部 • 著書『Androidアプリテスト技法』(共著) 『iOSアプリ テスト自動化入門』3.18発売 14年3月13日木曜日
  3. 3. 都内の大きな書店では 今週末から並ぶかも? 3.18 発売! 14年3月13日木曜日
  4. 4. Agenda • テストフィクスチャとは • CoreDataをインメモリストアで使用する • アプリケーションデータを再現してテスト 実行する 14年3月13日木曜日
  5. 5. テストフィクスチャとは 14年3月13日木曜日
  6. 6. テストフィクスチャとは • テスト実行環境、前提条件の集合 • コンテキスト • [setUp]やテストメソッドの中で整え、 [tearDown]でクリアする • テストの再現性、独立性を確保 14年3月13日木曜日
  7. 7. 再現性 • そのテストケースを何度実行しても、 いつ実行しても検証結果が変わらない 独立性 • 他のテストケースの実行結果に依存し ない 14年3月13日木曜日
  8. 8. CoreDataをインメモリ ストアで使用する 14年3月13日木曜日
  9. 9. インメモリストアとは • アプリインストール先のストレージでは なく、メモリ上にDBを作る • テスト実行ごとに、常に空のDBを得る ことができる • I/Oが発生しないので高速(のはず) 14年3月13日木曜日
  10. 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. 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. 12. アプリケーション データを再現して テスト実行する 14年3月13日木曜日
  13. 13. • 実際にアプリを操作して得られたアプリ ケーションデータを保存し、テスト実行 ごとに再現する • 大量データや、DBのマイグレーションの テストなどで有効 14年3月13日木曜日
  14. 14. 実機のデータを取り出す ※iOSシミュレータではFinderで取り出すことができます 拡張子”.xcappdata”ファイルとして保存 14年3月13日木曜日
  15. 15. データを設定して実行 Scheme設定画面でxcappdataを設定 14年3月13日木曜日
  16. 16. その他、フィクスチャ系 • テストフィクスチャをファイルで バンドルする • NSUserDefaultsをクリアする 方法が『iOSアプリ テスト自動化入門』 には書いてあります 14年3月13日木曜日
  17. 17. 14年3月13日木曜日

×