XC测试自测块修改?
XCTest self measureBlock modification?
XCtest "self measureBlock" 似乎限制为毫秒和 10 次测试代码运行。有什么方法可以修改 measureBlock 的行为以获得更多运行 and/or 纳秒或微秒精度?
TL;DR
Apple 提供了一种通过提供额外的字符串常量来修改 measureBlock:
行为的方法,但它们不支持除默认值之外的任何字符串常量。
详细解释
measureBlock
调用以下函数
- (void)measureMetrics:(NSArray *)metrics automaticallyStartMeasuring:(BOOL)automaticallyStartMeasuring withBlock:(void (^)(void))block;
//实现看起来像这样(我不能说 100% 但我很确定):
- (void)measureBlock:(void (^)(void))block {
NSArray<NSString *> *metrics = [[self class] defaultPerformanceMetrics];
[self measureMetrics:metrics automaticallyStartMeasure:YES withBlock:block];
}
defaultPerformanceMetrics
是一个 class 函数,它 return 是一个字符串数组。
来自 Xcode 来源
"Subclasses can override this to change the behavior of
-measureBlock:
"
太棒了,听起来很有前途;我们有定制行为吗?好吧,他们不会给你任何 return 的字符串。默认为 XCTPerformanceMetric_WallClockTime ("com.apple.XCTPerformanceMetric_WallClockTime")
原来 return 除了那个之外没有任何字符串常量。
请参阅 Xcode 6 (link) 中 WWDC 2014 第 414 节测试的幻灯片。
我引用第 158 页:
Currently supports one metric: XCTPerformanceMetric_WallClockTime
在 Xcode 7 中没有添加任何其他内容,所以看来您尝试修改 measureBlock
的运气不佳,抱歉。
我从未发现 measureBlock:
非常有用。如果您想查看替代方案,请查看 Tidbits.xcodeproj/TidbitsTestBase/TBTestHelpers/comparePerformance
https://github.com/tipbit/tidbits。
XCtest "self measureBlock" 似乎限制为毫秒和 10 次测试代码运行。有什么方法可以修改 measureBlock 的行为以获得更多运行 and/or 纳秒或微秒精度?
TL;DR
Apple 提供了一种通过提供额外的字符串常量来修改 measureBlock:
行为的方法,但它们不支持除默认值之外的任何字符串常量。
详细解释
measureBlock
调用以下函数
- (void)measureMetrics:(NSArray *)metrics automaticallyStartMeasuring:(BOOL)automaticallyStartMeasuring withBlock:(void (^)(void))block;
//实现看起来像这样(我不能说 100% 但我很确定):
- (void)measureBlock:(void (^)(void))block {
NSArray<NSString *> *metrics = [[self class] defaultPerformanceMetrics];
[self measureMetrics:metrics automaticallyStartMeasure:YES withBlock:block];
}
defaultPerformanceMetrics
是一个 class 函数,它 return 是一个字符串数组。
来自 Xcode 来源
"Subclasses can override this to change the behavior of
-measureBlock:
"
太棒了,听起来很有前途;我们有定制行为吗?好吧,他们不会给你任何 return 的字符串。默认为 XCTPerformanceMetric_WallClockTime ("com.apple.XCTPerformanceMetric_WallClockTime")
原来 return 除了那个之外没有任何字符串常量。 请参阅 Xcode 6 (link) 中 WWDC 2014 第 414 节测试的幻灯片。
我引用第 158 页:
Currently supports one metric: XCTPerformanceMetric_WallClockTime
在 Xcode 7 中没有添加任何其他内容,所以看来您尝试修改 measureBlock
的运气不佳,抱歉。
我从未发现 measureBlock:
非常有用。如果您想查看替代方案,请查看 Tidbits.xcodeproj/TidbitsTestBase/TBTestHelpers/comparePerformance
https://github.com/tipbit/tidbits。