【发布时间】:2014-03-21 15:03:40
【问题描述】:
我正在编写一个通过 Accessibility API 与其他程序交互的 Cocoa 程序。为了测试这些交互,我想启动一个小型测试程序并让我的测试对其进行操作。为了验证测试结果,我考虑过通过分布式对象查询测试器。例如,我启动测试器,它的主窗口出现,我的测试运行将窗口移动到特定位置的代码,然后通过分布式对象查询测试器程序以验证窗口是否已移动到正确的位置。
我有通过 NSTask 启动测试器的工作代码,还有一些通过分布式对象传达我需要的结果的工作代码,但它只有在我在测试代码之前手动启动测试器时才有效。
我一直坚持使用 XCTest 自动化整个测试。在 setUp 方法中,我通过 NSTask 启动测试程序,但是在运行测试之前我必须等待它完成启动。因此,在测试人员内部,我想我会通过 NSDistributedNotificationCenter 发出通知,并在开始测试之前等待测试代码中的通知到达。但我不确定在通知到达之前我应该如何阻止测试。
我考虑过启动一个线程来等待通知并在主线程的标志上忙等待,但 NSDistributedNotificationCenter 仅在主线程上发布通知。
也许有更简单的方法来同步我的测试代码和测试器进程,而我的想法太复杂了?
【问题讨论】:
-
How to unit test asynchronous APIs? 可能会有所帮助。
标签: objective-c xctest