dea*_*rne 6 xcode unit-testing code-coverage objective-c ios
我正在为iOS创建一个静态库,我正在尝试为它的单元测试获取代码覆盖率数据.我正在使用CoverStory来可视化生成的代码覆盖文件.
我得到了大多数测试的正确信息.
但是,任何验证应该抛出异常的测试都没有被标记为已测试.
例如,该方法
- (void)shouldThrow:(BOOL)throw {
if (throw)
@throw [NSException exception...];
NSLog(@"not thrown");
}
Run Code Online (Sandbox Code Playgroud)
经测试测试
- (void)testShouldThrow {
STAssertThrows( [myObject shouldThrow:YES], @"Should have thrown an exception");
STAssertNoThrow( [myObject shouldThrow:NO], @"Should not have thrown an exception");
}
Run Code Online (Sandbox Code Playgroud)
通过所有测试(即正确抛出异常).但是,代码覆盖率不会显示为100% - 带有@throwon 的行未标记为已测试.
有任何想法吗?
带有 @throw 的行未完成(因为抛出了异常),因此它不会被标记为已覆盖。您可以提交错误,但这对他们来说可能很难修复。如果它是分支语句中的一行,则可能很难判断它是否经过测试,但如果它之前有执行过的行,则您只需假设它也是如此。
坏事是你永远无法达到 100%。
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |