无法访问 XCTestCase Objective C 中的单例对象

Posted

技术标签:

【中文标题】无法访问 XCTestCase Objective C 中的单例对象【英文标题】:Not able to access singleton object inside XCTestCase Objective C 【发布时间】:2016-05-16 06:42:45 【问题描述】:

我正在编写一个 XCTestCase 用于一些计时器验证。我的计时器每 30 秒运行一次,我在单例对象 MySessionObject 中跟踪运行计数,其中 MySessionObject 是指向 [MySession sharedSession] 的宏。

问题是,当我执行测试时,我总是在MySessionObject.timerCount 中得到0。但是,当我通过应用程序目标运行它时,它会正确设置。

我在这里缺少什么来加载单例的任何线索?我的假设是它应该在我的测试目标启动应用程序时设置。

NSInteger timerCountsToTest = 2;

// Adding a delay to counter network operation
[NSThread sleepForTimeInterval:(30 * timerCountsToTest) + 2];

XCTAssertEqual(timerCountsToTest, MySessionObject.timerCount, "Timer did not work properly.");

【问题讨论】:

我相信这与工作空间有关。测试工作区与应用程序工作区不同。 @JoshCaswell 请看看我的回答。我是这样解决的。如果您有更好的解决方案,请告知。 【参考方案1】:

最终,我不得不在应用程序中放置一个隐藏的UITxtField,并将计时器计数器设置为该文本字段中的文本,然后从 UI 脚本中获取它。如果有人有更好的方法,请告知。

【讨论】:

以上是关于无法访问 XCTestCase Objective C 中的单例对象的主要内容,如果未能解决你的问题,请参考以下文章

XCTestCase 不提供项目类

如何将实例变量或属性添加到 XCTestCase?

XCTestCase:无法在导航栏中按下自定义栏按钮

无法在 XCTestCase 中加载任何故事板

IO9 上的 UI XCTestCase 无法播放

在 Objective-C 中循环 BOOL