XCTestでコードカバレッジを取ろうとしたらうまくいかなかったので、調べたところ、いつものようにStackoverflowに回答があって、それでカバレッジを取れるようになったので手順を紹介します。
テストターゲット向けにObjective-C ClassとしてGcovTestObserverを作成する
GcovTestObserver.mに次のコードを追加する
123456789101112#import "GcovTestObserver.h"
@implementation
GcovTestObserver
- (
void
) stopObserving
{
[
super
stopObserving
];
UIApplication* application = [
UIApplication
sharedApplication
];
[application
.delegate
applicationWillTerminate
:application];
}
@end
AppDelegate.mの
@implementation
内に次のコードを追加する123456#ifdef DEBUG
+ (
void
)initialize {
[[
NSUserDefaults
standardUserDefaults
]
setValue
:
@"XCTestLog,GcovTestObserver"
forKey
:
@"XCTestObserverClass"
];
}
#endif
AppDelegate.mの
applicationWillTerminate:
内に次のコードを追加する1234567- (
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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。