加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 测试异常时,XCode上的代码覆盖率不正确

发布时间:2020-12-14 19:31:26 所属栏目:百科 来源:网络整理
导读:我正在为iOS创建一个静态库,我正在尝试为它的单元测试获取代码覆盖率数据.我正在使用CoverStory来可视化生成的代码覆盖文件. 我得到了大多数测试的正确信息. 但是,任何验证应该抛出异常的测试都没有被标记为已测试. 例如,该方法 - (void)shouldThrow:(BOOL)t
我正在为iOS创建一个静态库,我正在尝试为它的单元测试获取代码覆盖率数据.我正在使用CoverStory来可视化生成的代码覆盖文件.

我得到了大多数测试的正确信息.

但是,任何验证应该抛出异常的测试都没有被标记为已测试.

例如,该方法

- (void)shouldThrow:(BOOL)throw {

    if (throw)
       @throw [NSException exception...];

    NSLog(@"not thrown");

}

经测试测试

- (void)testShouldThrow {
    STAssertThrows( [myObject shouldThrow:YES],@"Should have thrown an exception");

    STAssertNoThrow( [myObject shouldThrow:NO],@"Should not have thrown an exception");
}

通过所有测试(即正确抛出异常).但是,代码覆盖率不会显示为100% – @throw on的行未被标记为已测试.

有任何想法吗?

解决方法

@throw上的行未完成(因为抛出异常),因此它不会被标记为覆盖.您可以提交错误,但这可能很难修复.如果它是分支语句中的单行,则可能很难判断它是否已经过测试,但如果在它之前有行被执行,那么你只需要假设它也是如此.

糟糕的是你永远无法达到100%.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读