似乎XCtest" self measureBlock"限制为测试代码的毫秒和10次运行。有没有办法修改measureBlock的行为以获得更多的运行和/或纳秒或微秒的精度?
答案 0 :(得分:1)
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
是一个返回字符串数组的类函数。
来自Xcode源
“子类可以覆盖它来改变行为
-measureBlock:
“
可爱,听起来很有希望;我们有定制行为吗?好吧,他们没有给你任何回报。默认值为XCTPerformanceMetric_WallClockTime ("com.apple.XCTPerformanceMetric_WallClockTime")
事实证明除了那个之外没有任何字符串常量返回。 请参阅Xcode 6中的WWDC 2014 Session 414测试幻灯片(link)。
我引用第158页:
目前支持一个指标:XCTPerformanceMetric_WallClockTime
在Xcode 7中没有添加任何其他内容,因此您似乎很难尝试修改measureBlock
,抱歉。
答案 1 :(得分:0)
我从未发现measureBlock:
非常有用。如果您想查看替代方案,请查看Tidbits.xcodeproj/TidbitsTestBase/TBTestHelpers/comparePerformance
https://github.com/tipbit/tidbits。