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 自测块修改?的主要内容,如果未能解决你的问题,请参考以下文章

Python基础自测题答案和基础知识梳理

CentOS修改DNS地址方法|其他Linux发行版也应该适用,请自测

《软件方法》第一章自测题

数据结构-起步能力自测题 自测-5 Shuffling Machine(20 分)

软件开发中的自测及C代码示例

自测-1 打印沙漏 (20 分) —— 数据结构-起步能力自测题