2015-08-28 23 views
6

Próbuję użyć aplikacji XCode 7 UITesting do aplikacji Menubar, takiej jak Dropbox, 1Password w systemie Mac OS X. Czy to możliwe, aby zautomatyzować testowanie interfejsu użytkownika przy użyciu najnowszej funkcji oferowanej przez Xcode 7? Rozumiem, że testowanie interfejsu użytkownika działa dla aplikacji na iOS, ale wersja demonstracyjna nigdy się nie wyświetla, jeśli działa w aplikacji systemu operacyjnego lub nie. Jeśli działa dla aplikacji OS X, ale czy działa z aplikacją menubar? Proszę, poprowadź mnie przez ten problem.Xcode 7 ULEPSZENIE dla aplikacji paska menu na OS X

+1

Mam dokładnie ten sam problem. Możesz testować aplikacje OSX, ale jeśli włączysz opcję "Aplikacja jest agentem (UIElement)" na "Info.plists", wówczas 'XCUIApplication(). Launch()' przestaje działać. Jakieś pomysły? – Gaston

Odpowiedz

1

Zdaję sobie sprawę, że to pytanie jest bardzo stare, ale chciałem podzielić się moją odpowiedzią.

Utworzono duplikat mojego pliku Info.plist w/LSUIElement ustawionego na NO. Następnie utworzyłem nową konfigurację "UITesting" i wskazałem jej ustawienie kompilacji INFOPLIST_FILE. Lepszą opcją byłoby utworzenie zdefiniowanego przez użytkownika ustawienia kompilacji, a następnie przypisanie wartości tego ustawienia do LSUIElement, ale Xcode nie zezwala na to w/Booleans.

Po skonfigurowaniu konfiguracji UITesting można edytować schemat, aby korzystać z tej konfiguracji podczas testów.

1

znalazłem lepsze rozwiązanie tego problemu, motywowane tej odpowiedzi: https://stackoverflow.com/a/5384319/96737

Zamiast usuwania zdolność Dock z Info.plist, to lepiej, aby ustawić „politykę aktywacyjny” Zastosowanie jako „akcesorium” programowo .

W swift3 poprzez Xcode 8.1:

func applicationDidFinishLaunching(_ aNotification: Notification) { 
    NSApp.setActivationPolicy(NSApplicationActivationPolicy.accessory) 
} 

Największą korzyścią jest to, że działa w czasie rzeczywistym i podczas testów UI bez zmian. Nie musisz aktywować ani dezaktywować polityki aktywacji w zależności od tego, czy uruchamiasz aplikację w teście interfejsu użytkownika, czy nie.

To po prostu działa.

Powiązane problemy