我最近将测试覆盖率分析添加到了我们的代码库中,值得庆幸的是,我希望覆盖得很好的类的覆盖率达到了95%以上。我喜欢那些命中率达到100%的人,因为这显然是目标,但是我的一小部分 class 却停留在96-98%,因为没有一行人被命中。那一行是@implementation ClassName行,我感到非常困惑。

从逻辑上讲,如果该类的所有可执行行均已执行,则该类显然已实例化。

我正在使用标准的Xcode方法(__gcov_flush())来生成.gcda.gcno使用数据,并且正在使用CoverStory进行分析和HTML生成。

没什么大不了的。显然,该 class 的学习范围很广,但是令人讨厌的是,请记住那些不是100%的 class ,因为无论出于何种原因都会错过dang @implementation行。

我在命中@implementation行的文件与未命中的文件之间找不到模式。其他人有没有经历过和/或知道我可能会尝试减轻它的方法?甚至可能是CoverStory的错误?

最佳答案

我当前的项目也遇到了同样的问题,您可以使用以下方法解决:

编辑:对于XCText,它应该是XCTAssertEqualObjects,因为NSString *是对象

猕猴桃:

[NSStringFromClass([[YourClass new] class]) should] equal:NSStringFromClass[YourClass class])]

要么
XCTAssertEqualObjects(NSStringFromClass([[YourClass new] class]), NSStringFromClass([YourClass class]));

关于ios - iOS代码覆盖率:@implementation未命中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22396448/

10-13 05:41