日々精進

新しく学んだことを書き留めていきます

Cocoa Static LibraryのコードカバレッジをJenkinsで集計する

テスト対象が普通のアプリの場合、下記記事の通りのやればOK。
iOS - Xcode5でカバレッジをJenkinsに表示する - Qiita


テスト対象がStatic Libraryの場合は、このやりかただと*.gcdaが出力されない。
以下のようにすればOK。
・GcovTestObserverクラスの実装は以下のようにする。

#import <XCTest/XCTest.h>

// コードカバレッジを出力するためのクラス
@interface GcovTestObserver : XCTestObserver
@end

@implementation GcovTestObserver
- (void)stopObserving {
    [super stopObserving];
    extern void __gcov_flush(void);
    __gcov_flush();
}
@end



・以下のCoverageExportSetting.mをアプリ側ターゲットに追加する。

@interface CoverageExportSetting : NSObject
@end

@implementation CoverageExportSetting
#ifdef DEBUG
// コードカバレッジを出力するためのコード
+ (void)load {
    [[NSUserDefaults standardUserDefaults] setValue:@"XCTestLog,GcovTestObserver"
                                             forKey:@"XCTestObserverClass"];
}
#endif
@end



参考:code coverage - Generate gcda-files with Xcode5, iOS7 simulator and XCTest - Stack Overflow