XCode 8中单元测试偶尔无法运行

4
我升级了XCode 8,但是运行我的测试时有时会遇到麻烦...例如,我刚刚在测试一些代码时,可以连续运行3次我的测试...然后第4次出现以下错误: dyld: could not load inserted library 'PLATFORMS/iPhoneOS.platform/Developer/Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection' because image not found ***如果您认为此错误代表一个bug,请在/Users/patrick/Library/Developer/Xcode/DerivedData/MyApp-hjfppqmgxqrprucknvwtakynpqxs/Logs/Test/2B6C2EAE-5C13-40C9-BACE-3A00AA74F3EF/Session-UnitTests-2016-09-20_124123-gk3pW0.log附上日志文件。
我已经重启了我的iOS设备、电脑,删除了derived data等,但它仍然无法运行测试。 UPDATE:我应该提到,我正在尝试在我的iPad上运行测试,因为我有太多和NEON内部函数相关的代码,所以模拟器无法运行。但是当发生这种情况时,似乎有效的做法是先切换到在我的iPhone上构建测试,然后它就会说“正在运行测试”,旋转的小图标会一直转,但实际上没有任何测试在运行…我甚至可以点击我的app并与之交互,而这通常不是当我运行测试时得到的行为…然后我停止了构建,切回我的iPad,现在测试又可以运行了。

可能是重复的问题,参考链接:https://dev59.com/G1wY5IYBdhLWcg3wno8r - matt
2个回答

2
我在iPad上使用XCode 8.0(版本10.0.2(14A456))运行测试代码时,如果代码中出现未捕获的异常,就会一直出现这个错误。可能还有其他例子,但只要代码失败得很严重,它就会发生。
当单元测试由于异常而失败时,XCode无法恢复正常状态。
我认为这是XCode的问题;此答案提供了一个解决方法。单元测试将在异常处失败,并且后续运行会产生“找不到图像”的错误。
我找到的最简单的恢复方式如下:
- 将设备目标设置为通用iOS设备 - 断开我的iPad - 重新启动iPad - 连接所有东西
以下是演示问题的示例失败:
请注意,这个例子中的核心问题是我编写了一个糟糕的单元测试;我将一个nil参数传递给一个随后用于尝试向字典添加nil对象的方法。
更新:为了准确起见,问题在于我将一个不可变字典作为参数传递,而需要一个可变字典,从而产生了“未识别的选择器”错误。无论如何,异常都会导致XCode表现不佳。
  Assertions: failed: caught "NSInvalidArgumentException", "-[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance 0x1818f200"
(
    0   CoreFoundation                      0x1dd89e1f <redacted> + 154
    1   libobjc.A.dylib                     0x1cfef077 objc_exception_throw + 38
    2   CoreFoundation                      0x1dd8f515 <redacted> + 0
    3   CoreFoundation                      0x1dd8d589 <redacted> + 700
    4   CoreFoundation                      0x1dcb2f08 _CF_forwarding_prep_0 + 24
    5   tDefense                            0x000cd299 +[PlayingPiece addPlayingPiece:atLocation:onBoard:] + 326
    6   tDefense                            0x000cd5ad +[PlayingPiece addNewPiece:atLocation:onBoard:] + 154
    7   tDefenseTests                       0x00410777 -[PlayFieldTests testGetNeighbors] + 4594
    8   CoreFoundation                      0x1dd8e864 <redacted> + 68
    9   CoreFoundation                      0x1dcaf349 <redacted> + 294
    10  XCTest                              0x00307de5 __24-[XCTestCase invokeTest]_block_invoke_2 + 472
    11  XCTest                              0x0033b0dd -[XCTestContext performInScope:] + 312
    12  XCTest                              0x00307c07 -[XCTestCase invokeTest] + 296
    13  XCTest                              0x00308439 -[XCTestCase performTest:] + 560
    14  XCTest                              0x0030578d -[XCTestSuite performTest:] + 520
    15  XCTest                              0x0030578d -[XCTestSuite performTest:] + 520
    16  XCTest                              0x0030578d -[XCTestSuite performTest:] + 520
    17  XCTest                              0x002f1d55 __25-[XCTestDriver _runSuite]_block_invoke + 52
    18  XCTest                              0x00312325 -[XCTestObservationCenter _observeTestExecutionForBlock:] + 628
    19  XCTest                              0x002f1bed -[XCTestDriver _runSuite] + 512
    20  XCTest                              0x002f29b7 -[XCTestDriver _checkForTestManager] + 300
    21  XCTest                              0x0033c55b _XCTestMain + 690
    22  CoreFoundation                      0x1dd45bc3 <redacted> + 10
    23  CoreFoundation                      0x1dd455a7 <redacted> + 230
    24  CoreFoundation                      0x1dd43a61 <redacted> + 752
    25  CoreFoundation                      0x1dc93073 CFRunLoopRunSpecific + 486
    26  CoreFoundation                      0x1dc92e81 CFRunLoopRunInMode + 104
    27  GraphicsServices                    0x1f43bbfd GSEventRunModal + 156
    28  UIKit                               0x22e34acf <redacted> + 574
    29  UIKit                               0x22e2f201 UIApplicationMain + 150
    30  tDefense                            0x000d690f main + 106
    31  libdyld.dylib                       0x1d45e50b <redacted> + 2
)
  File: <unknown>

1

我在升级到Xcode 8 / Swift 2.3后遇到了完全相同的问题。删除派生数据、重启手机以及关闭并重新打开Xcode中的一个操作解决了它。


我有同样的问题。但是我尝试了你建议的所有方法,仍然得到了相同的错误。 - Junfeng
我提交了一个错误报告,苹果回复说这是另一个错误的重复。所以他们知道这个问题,希望很快能够修复它。 - patrick
继续提交重复的内容。这样他们就会知道它对很多人很重要。 - Robert Atkins

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