4

我编写了一个 OCUnit 单元测试用例,它依赖于外部 Web 服务来完成。我知道这本身就存在争议,但我绝对希望将 Web 服务包含在测试中(无论如何它都在内部服务器上运行)。

显然,当作为 SenTestCase 的一部分运行时,NSURLConnection 无法启动。连接根本不是由以下行启动的:

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];

没有调用任何委托方法。几乎相同的代码通常在 OCUnit 之外运行。

阻止它运行的 OCUnit 运行时环境是什么?

并不是说测试在请求返回之前完成:我有 NSCondition 锁来处理请求的异步性质。我也尝试过删除这些并在运行循环上旋转。测试用例继续执行,但 NSURLConnection 永远不会启动。

如果可能的话,我宁愿不将我的测试迁移到另一个单元测试框架。

4

1 回答 1

4

我有完全相同的问题,我通过使用来解决它

 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:30]];

我之前使用过 NSCondition,但我认为它可能会锁定 NSUrlConnection 的线程。

于 2013-02-28T00:48:10.300 回答