Xcode CI机器人在单元测试期间出现错误(意外的TestSuiteWillFinish)

4
我们最近使用iOS应用程序设置了一些Xcode bots来自动构建和测试我正在开发的应用程序。如果我只是进行“构建和分析”,则构建过程可以正常工作。如果我将其设置为运行测试,则会出现不同数量的错误,最终以“Unexpected TestSuiteWillFinish”结束。例如,最近一次运行显示如下:

运行测试套件TimeClockTestCase遇到错误(意外的TestCaseDidFinish)testParseResponseString遇到错误(意外的TestSuiteWillFinish)testGetIntegrationID遇到错误(意外的TestSuiteWillFinish)

而之前的一次只有一个错误:

testAddChildObjectTypeTimeClockEvent遇到错误(意外的TestSuiteWillFinish)

集成结果显示所有测试都已通过,无论显示了什么错误。如果我直接通过Xcode运行测试(而不是在服务器上运行机器人),就不会出现任何错误,并且通过的测试数量相同。

这些错误的原因是什么,如何消除它们?


以下是TimeClockTestCase的日志:
Test Suite 'TimeClockTestCase' started at 2014-02-23 23:11:09 +0000
2014-02-23 18:11:09.653 -0500 [TimeClockResponseCommand parseResponseString] [Line 74] W: Unsupported action number "3" in TIMECLOCK response command

Test Case '-[TimeClockTestCase testAddChildObjectTypeTimeClockEvent]' started.
Test Case '-[TimeClockTestCase testAddChildObjectTypeTimeClockEvent]' passed (0.000 seconds).
Test Case '-[TimeClockTestCase testAddChildObjectTypeTimeClockMode]' started.
Test Case '-[TimeClockTestCase testAddChildObjectTypeTimeClockMode]' passed (0.000 seconds).
Test Case '-[TimeClockTestCase testTimeclockEventColl]' started.
Test Case '-[TimeClockTestCase testTimeclockEventColl]' passed (0.000 seconds).
Test Case '-[TimeClockTestCase testTimeclockModeColl]' started.
Test Case '-[TimeClockTestCase testTimeclockModeColl]' passed (0.000 seconds).
Test Suite 'TimeClockTestCase' finished at 2014-02-23 23:11:09 +0000.
2个回答

5
我遇到了相同的随机行为。我能够确定我正在进行一个异步调用,并且测试它是导致这个随机的Unexpected TestSuiteWillFinish的原因。
由于我在使用Kiwi,所以我做的就是等待异步调用结束一小段时间,就像这里所示(https://github.com/allending/Kiwi/wiki/Asynchronous-Testing),针对那些特定的异步调用。
希望这可以帮助到你!

事实证明确实如此,尽管修复方式略有不同,因为我们使用的是CocoaLumberjack而不是Kiwi。供参考,我将#define LOG_ASYNC_ENABLED YES更改为NO - thegrinner

0
我们遇到了相同的问题,即Unexpected TestSuiteWillFinish调用导致测试中止。在我们的情况下,这是由于过多的调试日志记录引起的。禁用日志记录后,测试再次可靠地通过。
这似乎不是您问题的原因,但也许它是一个提示?
我猜测XCTest运行程序有一些超时机制。所以请检查您的测试是否及时执行?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接