iOS:使用 XCTest 对 UIViewController 组件进行单元测试
Posted
技术标签:
【中文标题】iOS:使用 XCTest 对 UIViewController 组件进行单元测试【英文标题】:iOS: Unit Testing UIViewController Components with XCTest 【发布时间】:2015-09-21 09:43:31 【问题描述】:我正在 Swift 的视图控制器中对 ios UIButton 的功能进行单元测试。该按钮的预期功能如下:
-
按钮最初的标题是“开始”
按下按钮后,标题变为“暂停”
简而言之,我想测试一下按钮被点击后,按钮的标题从“开始”变为“暂停”。
因为系统在更改发生并呈现在屏幕上之前需要一点时间,所以我需要轮询一小段时间来检查按钮的当前标题,直到按钮标题更改或分配的时间用完了。
通常,我使用 Quick/Nimble 框架进行单元测试,并使用expect(...).toEventually(...)
函数来测试这种轮询。但是,我的团队坚持我使用 XCTest 框架是为了保持一致性,所以我必须找到一些优雅的方式来使用 XCTest 实现测试。
您对 XCTest 框架的实现有什么建议吗?
【问题讨论】:
【参考方案1】:我能想出的解决方案是使用NSTimer
,它每隔一小段时间触发一次条件检查,直到指定的时间用完,然后使用XCTestExpectation
和waitForExpectationsWithTimeout
等待完成。 (查看更多关于 XCTestExpectation here)
有没有更好的方法来实现这个单元测试?
【讨论】:
以上是关于iOS:使用 XCTest 对 UIViewController 组件进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
XCTest/XCTest.h 文件未找到 XCode 5.1.1 iOS7
如何使用 XCTest 框架测试基于 REST 的原生 iOS 应用程序?