XCTest 自测块修改?
Posted
技术标签:
【中文标题】XCTest 自测块修改?【英文标题】:XCTest self measureBlock modification? 【发布时间】:2015-09-02 15:52:45 【问题描述】:XCtest“self measureBlock”似乎被限制为毫秒和 10 次测试代码运行。是否有任何方法可以修改 measureBlock 的行为以获得更多运行次数和/或纳秒或微秒精度?
【问题讨论】:
【参考方案1】: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
是一个返回字符串数组的类函数。
来自 Xcode 源代码
"子类可以覆盖这个来改变
-measureBlock:
"
可爱,这听起来很有希望;我们有自定义行为对吗?好吧,他们没有给你任何返回的字符串。默认为XCTPerformanceMetric_WallClockTime ("com.apple.XCTPerformanceMetric_WallClockTime")
事实证明,除了那个之外没有任何字符串常量可以返回。 请参阅 Xcode 6 (link) 中的 WWDC 2014 Session 414 测试幻灯片。
我引用第 158 页:
目前支持一种指标:XCTPerformanceMetric_WallClockTime
Xcode 7 中没有添加任何其他内容,因此您尝试修改 measureBlock
似乎很不走运,抱歉。
【讨论】:
【参考方案2】:我从未发现measureBlock:
非常有用。如果您想查看替代方案,请查看 Tidbits.xcodeproj/TidbitsTestBase/TBTestHelpers/comparePerformance
https://github.com/tipbit/tidbits。
【讨论】:
以上是关于XCTest 自测块修改?的主要内容,如果未能解决你的问题,请参考以下文章
CentOS修改DNS地址方法|其他Linux发行版也应该适用,请自测