ios - XCTestCase 禁用快照可访问性层次结构

标签 ios xcode xctest xctestcase

我正在使用 XCode 的 XCTestCase 进行自动化 UI 测试,以衡量我的应用程序的性能。我目前有一个包含 25 000 个元素的 UITable,当尝试运行应该滑动此列表的测试时,它会一直运行并在完成测试之前崩溃。应用 objective-c PU 使用率此时为 100%。

控制台最后的输出是:

Snapshot accessibility hierarchy for

当将列表限制为几百个元素( Not Acceptable )时,自动化测试至少能够滚动列表,但每次滚动之间等待大约 3-4 秒。

测试场景:

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

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

那么有什么办法可以加快测试速度吗?也许禁用可访问性层次结构(不以任何方式使用可访问性标签进行测试)。

最佳答案

也许你可以像一样使用 api - (double)pressAtPoint:(struct CGPoint)arg1 forDuration:(double)arg2 liftAtPoint:(struct CGPoint)arg3 velocity:(double)arg4 orientation:(long long)arg5 name :(id)arg6 处理程序:(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];
    }
}

关于ios - XCTestCase 禁用快照可访问性层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43919350/

相关文章:

javascript - iOS 版 Chrome 上的箭头功能

ios - 如何在 Xcode 4.5 中制作 .ipa 文件?

ios - ViewController 如何知道它关注 iOS?像 "viewDidLoad"

ios - XCUITest:如何跳入应用程序代码?如何修改被测应用程序的状态?

swift - 如何对调用异步任务的 UIButton 进行单元测试

ios - 应用程序更新后无处不在的商店位置意外更改

ios - 通知服务扩展生命周期

swift - 如何在我的 swift 应用程序中调试/测试 URL 打开

xcode - 如何将 XCTestCases 公开给外部测试包?

ios - 调试问题 - 值被隐藏