iOS:使用 XCTest 对 UIViewController 组件进行单元测试

标签 ios swift unit-testing

我正在 Swift 的 View Controller 中对 iOS UIButton 的功能实现单元测试。该按钮的预期功能如下:

  1. 按钮最初的标题为“开始”
  2. 按下按钮后,标题变为“暂停”

简而言之,我想测试单击按钮后按钮的标题是否从“开始”更改为“暂停”。

因为系统在发生更改并在屏幕上呈现之前需要一些时间,所以我需要轮询一小段时间来检查按钮的当前标题,直到按钮标题更改或分配的时间为止已用完。

通常,我使用 Quick/Nimble 框架进行单元测试,并使用 expect(...).toEventually(...) 函数来测试这种轮询。但是,为了一致性,我的团队坚持使用 XCTest 框架,所以我必须找到一些优雅的方法来使用 XCTest 实现测试。

您对XCTest框架的实现有什么建议吗?

最佳答案

我能想到的一个解决方案是使用NSTimer,它每隔一个小间隔触发一次条件检查,直到指定的时间用完,并使用XCTestExpectation waitForExpectationsWithTimeout 以等待完成。 (查看有关 XCTestExpectation 的更多信息 here )

有没有更好的方法来实现这个单元测试?

关于iOS:使用 XCTest 对 UIViewController 组件进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32692003/

相关文章:

ios - 使用 Codable 从 2 个不同的 JSON 文件实例化单个类,而不使用选项

ios - Swift:使用自定义字体从 HTML 创建字符串

iOS Swift 3 架构问题

c++ - gtest,对 'testing::Test::~Test()' 的 undefined reference ,testing::Test::Test()

java - jms集成开发的单元测试

ios - MPMoviePlayerController 导致泄漏

objective-c - 如何设置 UITapGestureRecognizer 的超时阈值?

ios - 设置 UIBarButtonItem.appearance() 在 iOS 15 上不起作用

ios - 不使用 UIApplication.shared 获取状态栏的大小

matlab - 在 TestCase.verifyEqual 中混合绝对和相对公差