XCUITesting不断崩溃我的应用程序

时间:2015-10-06 21:38:49

标签: ios xcode crash xcode-ui-testing

我的应用程序崩溃了以下堆栈 -

Crash

Thread 1Queue : com.apple.main-thread (serial)
#0 0x0722dd39 in ___forwarding___ ()
#1 0x0722da0e in __forwarding_prep_0___ ()
#2 0x1782b083 in -[UITableViewCellAccessibility _accessibilityChildren] ()
#3 0x1782ccd0 in -[UITableViewCellAccessibility accessibilityElementCount] ()
#4 0x1794d241 in -[NSObject(AXPrivCategory) _accessibilityHasOrderedChildren] ()
#5 0x1795a3d2 in -[NSObject(AXPrivCategory) _accessibilityFrameForSorting] ()
#6 0x1795a4ba in -[NSObject(AXPrivCategory) accessibilityCompareGeometry:] ()
#7 0x07201532 in __36-[NSArray sortedArrayUsingSelector:]_block_invoke ()
#8 0x0720150a in __56-[NSArray sortedArrayFromRange:options:usingComparator:]_block_invoke ()
#9 0x071e7ddd in __CFSimpleMergeSort ()
#10 0x071e7e13 in __CFSimpleMergeSort ()
#11 0x071e7e2c in __CFSimpleMergeSort ()
#12 0x071e7cf3 in CFSortIndexes ()
#13 0x071f364a in -[NSArray sortedArrayFromRange:options:usingComparator:] ()
#14 0x07201454 in -[NSArray sortedArrayWithOptions:usingComparator:] ()
#15 0x072013f0 in -[NSArray sortedArrayUsingSelector:] ()
#16 0x178362df in -[UIViewAccessibility _accessibilityUserTestingChildren] ()
#17 0x1796ec58 in -[NSObject(UIAccessibilityAutomation) _accessibilityUserTestingChildrenCount] ()
#18 0x17953483 in -[NSObject(AXPrivCategory) accessibilityAttributeValue:] ()
#19 0x1796f559 in -[NSObject(UIAccessibilityAutomation) _accessibilityUserTestingSnapshotDescendantsWithAttributes:maxDepth:maxChildren:maxArrayCount:] ()
#20 0x17970778 in -[NSObject(UIAccessibilityAutomation) _accessibilityUserTestingSnapshotWithOptions:] ()
#21 0x17951a60 in -[NSObject(AXPrivCategory) accessibilityAttributeValue:forParameter:] ()
#22 0x1793b59d in _copyParameterizedAttributeValueCallback ()
#23 0x179c9538 in _AXXMIGCopyParameterizedAttributeValue ()
#24 0x179c319a in _XCopyParameterizedAttributeValue ()
#25 0x179d24b3 in mshMIGPerform ()
#26 0x07201125 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#27 0x07201090 in __CFRunLoopDoSource1 ()
#28 0x071f6546 in __CFRunLoopRun ()
#29 0x071f5866 in CFRunLoopRunSpecific ()
#30 0x071f567b in CFRunLoopRunInMode ()
#31 0x0806a664 in GSEventRunModal ()
#32 0x0806a4a1 in GSEventRun ()
#33 0x04d52cc1 in UIApplicationMain ()
#34 0x0002dc3e in main at 
#35 0x07bbea21 in start ()

在控制台中显示以下消息 - - [UITableTextAccessibilityElement retain]:发送到解除分配的实例0x24f4db30的消息

我的应用程序在没有UI测试的情况下使用时工作正常。 我尝试使用记录的UI记录UITest但仍然面临同样的崩溃。 然后我手动编写了UI测试,但在我的应用程序中仍然遇到了相同的崩溃。

堆栈没有显示提供我可以通过其调试我的应用程序的任何信息。

对此有任何帮助表示赞赏。

Sample Project - 使用以下步骤重现示例项目中的崩溃。

  • 在上面的示例项目中,尝试在TestProjectUITests.m中运行测试testExample。

  • 或者 - 尝试使用UI Recorder记录UI测试,并执行以下步骤

    1. 在“收件人”字段中输入一些文字
    2. 点击摘要字段
    3. 在cc字段上输入一些文字
    4. 点击密送字段
    5. 在密件抄送字段
    6. 上键入一些文字

2 个答案:

答案 0 :(得分:0)

如果您可以发布一些代码或示例应用程序来解决此问题,那么提供一些有用的建议会更容易。如果遇到僵尸,您还可以运行zombie instrument来验证对象上每次释放/保留的内存堆栈。 但是,控制台错误清楚地指向您的代码中的狡猾的UITableView或UITableViewCell。您可以在测试期间执行的应用程序导航路径中查找它们。 我怀疑有保留财产,

@property(nonatomic, retain) UIView *accessibleView

在swift中,默认情况下属性很强(保留计数),

var accessibleView: UiView?

在设置UIView子类时定义,您可能正在使用UIAccessibilityContainer方法将UI元素公开为可访问元素。似乎属性是在dealloc()中释放或视图从堆栈中弹出。 如果您可以发布一些代码,情况会更加清晰。

答案 1 :(得分:0)

Apple已在XCode 7.2 beta 1中解决了这个问题。