Xcode 5.1 / iOS 7.1中的单元测试问题:BKSEventFocusManager中的断言失败

前端之家收集整理的这篇文章主要介绍了Xcode 5.1 / iOS 7.1中的单元测试问题:BKSEventFocusManager中的断言失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
升级Xcode 5.1后运行基于XCTest的逻辑测试时看到以下错误 – 很想知道一种解决方法.

2014-03-11 12:57:42.258 xctest[25605:303] deferral properties must have a 
clientID 2014-03-11 12:57:42.258 xctest[25605:303] ***
Assertion failure in -[BKSEventFocusManager
deferEventsForClientWithProperties:toClientWithProperties:],/SourceCache/BackBoardServices_Sim/SpringBoard-2618.99.15/megatrond/BKSEventFocusManager.m:63
<unknown>:0: error: -[CSAPIErrorHandlerTests testDisplayReachabilityAlert] : 
props must have a valid clientID (  
0   CoreFoundation      0x00b251e4 __exceptionPreprocess + 180  
1   libobjc.A.dylib     0x007988e5 objc_exception_throw + 44    
2   CoreFoundation      0x00b25048 +[NSException raise:format:arguments:] + 136     
3   Foundation          0x000114de -[NSAssertionHandler
    handleFailureInMethod:object:file:lineNumber:description:] + 116    
4   BackBoardServices   0x0197fece -[BKSEventFocusManager
    deferEventsForClientWithProperties:toClientWithProperties:] + 154   
5   UIKit               0x07a942e1 -[UIWindow _beginKeyWindowDeferral] + 176    
6   UIKit               0x07a940a7 -[UIWindow _makeKeyWindowIgnoringOldKeyWindow:] + 129    
7   UIKit               0x07a9400d -[UIWindow makeKeyWindow] + 41   
8   UIKit               0x07a943e2 -[UIWindow makeKeyAndVisible] + 91

解决方法

我发现重现这个的最小情况如下

#import <XCTest/XCTest.h>

@interface DummyTest : XCTestCase

@end

@implementation DummyTest

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}

- (void)tearDown {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    [super tearDown];
}

- (void)testExample {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title"
                                                    message:@"Message"
                                                   delegate:nil
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:nil];

    // Commenting out the next row does not cause the problem
    [alert show];

    XCTAssertTrue(YES);
}

@end

似乎在测试中显示UIAlertView会导致此问题.这在Xcode 5.0中有效,但在Xcode 5.1中被破坏了.

> Xcode版本5.1(5B130a)
> OSX版本10.9.2

如果您遇到此问题,请尝试上面的代码,看看它是否可重现

猜你在找的Xcode相关文章