【发布时间】:2016-01-04 15:11:06
【问题描述】:
简单的问题:我正在尝试使用 XCTest 来声明一些 static 常量的值 - 我的 QA 工程师要求我这样做,以防另一位工程师进入并手动更改它们。
令我惊讶的是,我正在编写一个超级简单的断言,以确保该值是我设置的硬编码值,在本例中为 768.0f,但测试失败,并将其视为零。
在.h 文件中:
static CGFloat const BLABannerViewExpectedWidthPad;
在.m 文件中:
static CGFloat const BLABannerViewExpectedWidthPad = 768.0f
这些在 @interface 和 @implementation 块之外,通常在 Objective-C 中声明它们。
测试:
- (void)test_constants {
XCTAssertEqual(BLABannerViewExpectedWidthPad, 768.0f);
}
这失败了,0 is not equal to 768。
很奇怪,我是在做一些愚蠢的事情,还是我们不能对此进行单元测试?
【问题讨论】:
-
顺便说一句:根据屏幕尺寸硬编码任何元素的宽度是非常不受欢迎的。
-
我知道,我们正在为继承的应用程序进行准系统 6 / 6+ 兼容性更新,然后再进行更重的重构:)
-
对于相等的浮点数也(答案已发布)使用 XCTAssertEqualWithAccuracy 而不是 XCTAssertEqual
标签: objective-c unit-testing assert xctest