我的一些单元测试测试没有在XCode 4.4中完成

Log*_*man 27 xcode unit-testing objective-c ocunit xcode4.4

我看到人们在这里和其他地方发布了这个,但我没有找到任何有效的解决方案.我正在使用XCode 4.4并设置了一系列单元测试.我之前在这个项目上运行过它们,所以我知道如果他们真的跑了,他们确实会通过/失败.

我有大约15个测试套件,每个测试套件包含1-7个测试.在大多数尝试中,除了1(FooTests)之外,所有测试套件都已完成(并通过).它给出了警告:

FooTests did not finish
    testFoo did not finish
Run Code Online (Sandbox Code Playgroud)

无论未完成的测试中发生了什么,XCode都会报告测试成功.另外需要注意的是,有时它是一个不能完成的不同测试,有时候多个套件无法完成.我没有注意到所有测试都完成的情况,但从这种看似随机的行为来判断,我认为这是可能的.

那么,这是XCode中的一个错误吗?我想不出任何其他原因导致测试随机完成,然后导致XCode报告一切都成功.有什么解决方案吗?

son*_*fly 17

我在XCode 4.5.2上.对于应用程序单元测试,如果您的测试套件完成得太快以至于主应用程序在此之前未正确加载,您将收到警告.您可以通过在测试结束时添加睡眠来避免此问题,如下所示.逻辑单元测试不会发生这种情况.

 [NSThread sleepForTimeInterval:1.0];
Run Code Online (Sandbox Code Playgroud)

  • 在一个快速的套房,我仍然看到0.0.我把这个代码放在我的tearDown函数中:` - (void)tearDown {static int loaded = FALSE; if(!loaded){[NSThread sleepForTimeInterval:1.0]; loaded = TRUE; } [super tearDown]; } (2认同)

Sam*_*ane 4

我刚刚在使用 XC4.5DP4 时遇到了这个问题。

我有一个测试,它在循环中执行一些工作,当它脱离循环时不执行任何其他操作,并且我收到“未完成”错误。

为了证明测试已完成,我将其添加为最后一行:

NSLog(@"done");
Run Code Online (Sandbox Code Playgroud)

不仅“done”被打印到输出中——现在 Xcode 表示测试已经完成。

似乎是一个解决方法......想想吧。