Jas*_*ues 14 code-coverage objective-c lcov xcode5
如何使用Xcode 5和iOS7生成代码覆盖?
在升级之前,我得到的代码覆盖率很好.现在我看不到正在生成任何*.gcda文件.
我正在使用的cmd-line是:
xcodebuild -workspace ${module.name}.xcworkspace test -scheme ${module.name} -destination OS=${module.sdk.version},name=iPad -configuration Debug
Run Code Online (Sandbox Code Playgroud)
适用于AppCode
适用于Xcode IDE
Sul*_*han 15
以下是一个修复SenTestKit- 只需将此类添加到您的测试目标.应该可以做类似的事情XCTest
@interface VATestObserver : SenTestLog
@end
static id mainSuite = nil;
@implementation VATestObserver
+ (void)initialize {
[[NSUserDefaults standardUserDefaults] setValue:@"VATestObserver" forKey:SenTestObserverClassKey];
[super initialize];
}
+ (void)testSuiteDidStart:(NSNotification*)notification {
[super testSuiteDidStart:notification];
SenTestSuiteRun* suite = notification.object;
if (mainSuite == nil) {
mainSuite = suite;
}
}
+ (void)testSuiteDidStop:(NSNotification*)notification {
[super testSuiteDidStop:notification];
SenTestSuiteRun* suite = notification.object;
if (mainSuite == suite) {
UIApplication* application = [UIApplication sharedApplication];
[application.delegate applicationWillTerminate:application];
}
}
Run Code Online (Sandbox Code Playgroud)
并添加
extern void __gcov_flush(void);
- (void)applicationWillTerminate:(UIApplication*)application {
__gcov_flush();
}
Run Code Online (Sandbox Code Playgroud)
这为什么有效?
测试和测试的应用程序是单独编译的.测试实际上是注入到正在运行的应用程序中,因此__gcov_flush()必须在应用程序内部而不是在测试内部调用.
小魔术与观察者只能使我们能够检查时,测试将要结束,我们触发__gcov_flush()内部应用程序被调用.
| 归档时间: |
|
| 查看次数: |
8331 次 |
| 最近记录: |