2017-05-11 22 views
1

내 애플리케이션의 성능을 측정하기 위해 자동화 된 UI 테스트를 위해 XCode의 XCTestCase를 사용하고 있습니다. 나는 현재 25 000 개의 요소가있는 UITable을 가지고 있으며이 목록을 스 와이프해야하는 테스트를 실행하려고 할 때 테스트를 끝내기 전에 영원히 멈추게됩니다. 이 시점에서 앱의 CPU 사용률은 100 %입니다.XCTestCase 스냅 샷 접근성 계층을 사용하지 않음

콘솔의 마지막 출력은 다음과 같습니다

에 대한

스냅 샷 접근성 계층 수백 요소 (허용하지 않음) 자동화 된 테스트가 스크롤 할 수 아래로 목록을 제한하는 경우 각 스크롤 사이에 3-4 초 정도 기다리십시오.

테스트 시나리오 :

let app = XCUIApplication(); 
app.buttons["Long list"].tap(); 

let table = app.tables.element; 
table.swipeUp(); 
table.swipeUp(); 

그래서 테스트를 가속화의 방법이? 아마도 액세스 가능성 계층을 사용하지 못하게 할 수 있습니다 (테스트를 위해 내게 필요한 옵션 레이블을 사용하지 않는 방법).

답변

0

어쩌면 당신은 - (double)pressAtPoint:(struct CGPoint)arg1 forDuration:(double)arg2 liftAtPoint:(struct CGPoint)arg3 velocity:(double)arg4 orientation:(long long)arg5 name:(id)arg6 handler:(CDUnknownBlockType)arg7;

#ifndef XCEventGenerator_h 
#define XCEventGenerator_h 

typedef void (^CDUnknownBlockType)(void); 

@interface XCEventGenerator : NSObject 

+ (id)sharedGenerator; 

// iOS 10.3 specific 
- (double)forcePressAtPoint:(struct CGPoint)arg1 orientation:(long long)arg2 handler:(CDUnknownBlockType)arg3; 
- (double)pressAtPoint:(struct CGPoint)arg1 forDuration:(double)arg2 orientation:(long long)arg3 handler:(CDUnknownBlockType)arg4; 
- (double)pressAtPoint:(struct CGPoint)arg1 forDuration:(double)arg2 liftAtPoint:(struct CGPoint)arg3 velocity:(double)arg4 orientation:(long long)arg5 name:(id)arg6 handler:(CDUnknownBlockType)arg7; 
@end 

#endif /* XCEventGenerator_h */ 
- (void)testExample { 
    XCUIApplication* app = [[XCUIApplication alloc] init]; 
    XCUICoordinate* start_coord = [app coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.3)]; 
    XCUICoordinate* end_coord = [app coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.7)]; 
    NSLog(@"Start sleeping"); 
    [NSThread sleepForTimeInterval:4]; 
    NSLog(@"end sleeping"); 
    for(int i = 0; i < 100; i++) 
    { 
     [[XCEventGenerator sharedGenerator] pressAtPoint:start_coord.screenPoint 
              forDuration:0 
              liftAtPoint:end_coord.screenPoint 
              velocity:1000 
              orientation:0 
              name:@"drag" 
              handler:^{}]; 
     [NSThread sleepForTimeInterval:1]; 
    } 
} 
같은 API를 사용할 수 있습니다