2012-06-18 25 views
8

Tôi muốn kiểm tra khả năng của ứng dụng để xử lý các thay đổi định hướng (dọc/ngang). Tôi hiện đang sử dụng KIF và theo như tôi biết, nó không thể làm điều này. Có cách nào để mô phỏng các sự kiện xoay vòng theo lập trình cho trình mô phỏng iOS không?Mô phỏng các thay đổi định hướng trong iOS cho mục đích thử nghiệm

Tôi không quan tâm nếu đó là một số API riêng tư không được đăng ký hoặc bị hack vì điều này sẽ chỉ chạy trong khi thử nghiệm và sẽ không phải là một phần của bản dựng sản xuất.

Trả lời

9

Đây là một bước để đạt được điều này:

+ (KIFTestStep*) stepToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation { 

    NSString* orientation = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) ? @"Landscape" : @"Portrait"; 
     return [KIFTestStep stepWithDescription: [NSString stringWithFormat: @"Rotate to orientation %@", orientation] 
          executionBlock: ^KIFTestStepResult(KIFTestStep *step, NSError *__autoreleasing *error) { 
           if([UIApplication sharedApplication].statusBarOrientation != toInterfaceOrientation) { 
            UIDevice* device = [UIDevice currentDevice]; 
            SEL message = NSSelectorFromString(@"setOrientation:"); 

            if([device respondsToSelector: message]) { 
             NSMethodSignature* signature = [UIDevice instanceMethodSignatureForSelector: message]; 
             NSInvocation* invocation = [NSInvocation invocationWithMethodSignature: signature]; 
             [invocation setTarget: device]; 
             [invocation setSelector: message]; 
             [invocation setArgument: &toInterfaceOrientation atIndex: 2]; 
             [invocation invoke]; 
            } 
           } 

           return KIFTestStepResultSuccess; 
          }]; 
} 

Lưu ý: Giữ thiết bị của bạn bằng phẳng trên bàn hoặc các bản cập nhật gia tốc sẽ quay khung cảnh trở lại.

+0

Điều này dường như không hoạt động trong trình mô phỏng. Tôi không có thiết bị vì vậy tôi đã không thử nghiệm nó trên nó, nhưng thử nghiệm KIF sẽ chạy trên mô phỏng thông qua VaxSim vì vậy nó đã chạy trên giả lập. Bạn có thể vui lòng xác nhận rằng điều này có/không chạy trên trình mô phỏng không? Tôi đang sử dụng trình mô phỏng iOS 6.1. – applefreak

+0

Tệ của tôi! Nó chỉ hoạt động nếu Ứng dụng hỗ trợ định hướng được đề cập! – applefreak

0

Tôi không biết ý bạn là 'lập trình' nhưng nếu bạn sử dụng thư viện UIAutomation do Apple cung cấp cùng với mẫu Tự động hóa của ứng dụng Dụng cụ, bạn có thể mô phỏng các hướng khác nhau được iPhone hỗ trợ.

+0

Đúng, tôi cũng đã tìm thấy điều này. Tôi vẫn đang tìm cách để làm điều đó từ bên trong ứng dụng, trong Objective-C. Đó là cách hoạt động của khung kiểm tra KIF. –

-2

Tại sao lại có lập trình? Trình mô phỏng thực hiện chính xác những gì bạn muốn, nó kiểm tra khả năng của ứng dụng để xử lý các thay đổi định hướng.

Trong trình mô phỏng hoặc sử dụng trình đơn trên cùng Phần cứng> Xoay trái/phải hoặc giữ phím Command và sử dụng mũi tên trái và phải.

+3

Tôi muốn làm điều đó theo chương trình bởi vì tôi muốn có các kiểm tra giao diện người dùng tự động chạy mà không có sự can thiệp của tôi trên máy chủ xây dựng. –

4

Để mô phỏng thay đổi định hướng trong Tự động hóa giao diện người dùng, bạn có thể sử dụng phương thức setDeviceOrientation cho UIATarget. Ví dụ:

UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT); 

Phương pháp cần một tham số 'deviceOrientation' tham số. Thông tin khác here

100% này hoạt động trên thiết bị iOS thực. Tôi không chắc chắn về giả lập.

+0

Những gì bạn đề nghị là một cái gì đó phải được chạy từ công cụ tự động hóa giao diện người dùng. Điều đó sẽ không hiệu quả đối với tôi. Tôi cần mã Objective C có thể được gọi từ bên trong ứng dụng. Đó là cách hoạt động của khung kiểm tra KIF. Xin lỗi vì đã không đủ rõ ràng. –

Các vấn đề liên quan