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%. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |