我最近将测试覆盖率分析添加到了我们的代码库中,值得庆幸的是,我希望覆盖得很好的类的覆盖率达到了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/