gpt4 book ai didi

IOS -XCTest : How Do I Get A Run Loop to Work in A Unit Test? 中的 NSRunLoop

转载 作者:可可西里 更新时间:2023-11-01 03:07:40 25 4
gpt4 key购买 nike

好的。我环顾四周,没有找到我的问题的确切答案。

我正在尝试在单元测试(而不是主运行)中测试超时处理程序。

问题似乎是 [NSRunLoop mainRunLoop] 没有像在标准运行中那样在单元测试中运行。

我以这种方式超时:

NSTimer *pTimeoutHandler = [NSTimer 
timerWithTimeInterval:2.0
target:self
selector:@selector(timeoutHandler:)
userInfo:nil
repeats:NO
];
[[NSRunLoop mainRunLoop] addTimer:pTimeoutHandler forMode:NSRunLoopCommonModes];

这在标准运行中有效。这是设置超时的推荐方式。

但是,在测试运行中,这不起作用。 timeoutHandler:(NSTimer*)timer 例程从未被调用。

似乎有什么东西干扰了运行循环。

有什么方法可以使超时在运行和单元测试中都起作用?

最佳答案

当您使用定时器和主运行循环时,您将需要手动运行运行循环:

while (continueCondition || !time_way_over_timeout)  {
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}

continueCondition可以是一些标志,指示超时处理程序被调用,time_way_over_timeout当前时间与预先计算的最大执行时间的比较(所以你可以为您的单元测试处理“超时测试超时”^^)

另请参阅这篇关于异步单元测试的博文:http://dadabeatnik.wordpress.com/2013/09/12/xcode-and-asynchronous-unit-testing/

关于IOS -XCTest : How Do I Get A Run Loop to Work in A Unit Test? 中的 NSRunLoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com