XCTestでコードカバレッジを取ろうとしたらうまくいかなかったので、調べたところ、いつものようにStackoverflowに回答があって、それでカバレッジを取れるようになったので手順を紹介します。
テストターゲット向けにObjective-C ClassとしてGcovTestObserverを作成する
GcovTestObserver.mに次のコードを追加する
#import "GcovTestObserver.h" @implementation GcovTestObserver - (void) stopObserving { [super stopObserving]; UIApplication* application = [UIApplication sharedApplication]; [application.delegate applicationWillTerminate:application]; } @end
AppDelegate.mの
@implementation
内に次のコードを追加する#ifdef DEBUG + (void)initialize { [[NSUserDefaults standardUserDefaults] setValue:@"XCTestLog,GcovTestObserver" forKey:@"XCTestObserverClass"]; } #endif
AppDelegate.mの
applicationWillTerminate:
内に次のコードを追加する- (void)applicationWillTerminate:(UIApplication *)application { #ifdef DEBUG extern void __gcov_flush(void); __gcov_flush(); #endif }
Generate Test Coverage FilesをYesにする
Instrument Program FlowをYesにする
これでテストを実行すると、~/Library/Developer/Xcode/DerivedData/<プロジェクト名>-<てきとうな文字列>/Build/Intermediates/<プロジェクト名>.build/Debug-iphonesimulator/<ターゲット名>.build/Objects-normal/i386あたりに.gcnoと.gcdaができているはずです。
あとは、以前に紹介したCoverStoryを使うなり、Jenkinsでカバレッジをグラフ表示させるなりすればよいでしょう。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。