2009-06-15 26 views
17

Chciałbym, aby moja aplikacja do testowania iPhone'a była automatycznie testowana na IPhone. Poniżej przedstawiono kroki chciałbym posiadać:Automatyzacja testu XCode dla IPhone

  1. kompilacji, łącza i kod podpisać aplikację iPhone (Xcodebuild)
  2. przesłać nowo zbudowany aplikację na iPhone
  3. prowadzony przesłanego aplikację na iPhone automatycznie
  4. zbierać wynik z konsoli gdb
  5. zamknąć aplikacji

teraz mam problem z kroku 2 i 3, gdzie nie mogę zrobić to automatycznie (mogę to zrobić z XCode za pomocą przycisku "Build and Debug". To jednak wymaga ręcznego kliknięcia).

Zrobiłem kilka badań na automacie i nie odpowiada mi mój problem. Inną opcją, o której myślę, jest skompilowanie aplikacji na symulator iPhone'a i uruchomienie jej, ale nie jestem pewien, jak dokładny będzie wynik testu w porównaniu z rzeczywistym urządzeniem.

Jestem nowy w rozwoju komputerów Mac/IPhone, być może ktoś ma lepszy sposób na przetestowanie tego. Wszelkie opinie i dane wejściowe są mile widziane. Dzięki.

Odpowiedz

5

Narzędzie, którego prawdopodobnie chcesz użyć do kompilacji i instalacji, to Applescript. Coś w rodzaju:

tell application "Xcode" to launch 

Nie twierdzę, że jest to pełna odpowiedź; jest jeszcze wiele rzeczy do wypracowania. Ale Applescript będzie jednym z waszych kluczowych narzędzi, w które wierzę.

+0

dzięki za wskaźnik. Udało mi się uruchomić XCode za pomocą skryptu jabłkowego. W tej chwili muszę się dowiedzieć, jaka jest składnia, którą należy kliknąć, wybrać odpowiedni projekt i kliknąć "buduj i używaj". Minie sporo czasu, zanim wyjdę z czymś pożytecznym. – chuan

+2

Nie myśl o tym jako o "buduj kliknięcia i idź". Musisz myśleć o wydarzeniach. Jeśli klikniesz "w głowę", często zejdziesz na złą drogę. Polecenie kompilacji to "kompilacja". Będziesz chciał spędzić dużo czasu w "Otwartym słowniku" Applescript Editor, aby sprawdzić, co zapewnia Xcode. Będziesz potrzebował poleceń takich jak "buduj przy użyciu konfiguracji kompilacji o nazwie" Release "pierwszego projektu". "uruchom" to, co go uruchomi. "ustawiona architektura aktywna" może być również ważna. Najtrudniejsze pytanie brzmi: jak łatwo uzyskać dane wyjściowe konsoli. –

+1

wyjście konsoli można zrobić w ten sposób: typu terminala następujące polecenia: defaults write com.apple.Xcode PBXGDBDebuggerLogToFile TAK defaults write com.apple.Xcode PBXGDBDebuggerLogFileName <ścieżka do mojego pliku wyjściowego gdb> Z tym, Piszę skrypt Pythona do wywoływania kompilacji i uruchamiam aplikację testową. Następnie pobierz dziennik wyjściowy po zakończeniu testu. Przy okazji, jeszcze raz dziękuję za wskazówki w Applescript. Spróbuję tego dzisiaj. – chuan

1

Istnieje narzędzie wiersza poleceń "xcodebuild", które można wywołać, aby uruchomić kompilację XCode bez jej otwierania. Są flagi, których możesz użyć do ustawiania celów i tak dalej.

+0

dzięki za pomoc. xcodebuild po prostu zbuduje plik binarny i nie prześle nowo skompilowanego pliku binarnego do iPhone'a. Jeśli istnieje flaga/opcja, którą muszę określić, aby działała, chciałbym o tym wiedzieć. – chuan

0

można dodać fazę kompilacji do celu, który uruchamia skrypt, aby przesłać plik binarny do iPhone?

Kliknij prawym przyciskiem myszy na bramkę, Add-> New Build fazowej> New Run Script Budowanie Phase

16

sekcji komentarzy nie zapewnia dobry sposób wyświetlania rozwiązanie prawidłowo. Oto podsumowanie odpowiedzi.

Zadanie budowania aplikacji IPhone, przesyłania i wyzwalania procesu debugowania na IPhone odbywa się za pomocą AppleScript. Oto jak wygląda AppleScript:

tell application "Xcode" 
    open "Users:chuan:Desktop:iphone_manual_client:iphone_manual_client.xcodeproj" 
    tell project "iphone_manual_client" 
     clean 
     build 
     (* for some reasons, debug will hang even the debug process has completed. 
      The try block is created to suppress the AppleEvent timeout error 
     *) 
     try 
      debug 
     end try 
    end tell 
    quit 
end tell 

AppleScript akceptuje ":" zamiast "/" dla separatora plików i folderów.

Wyjście konsoli GDB można przechwycić, ustawiając opcję GDB, aby zapisać ją w pliku. odbywa się to wpisując następujące polecenie w terminalu:

defaults write com.apple.Xcode PBXGDBDebuggerLogToFile YES 
defaults write com.apple.Xcode PBXGDBDebuggerLogFileName <path to my gdb output file> 

Wreszcie, wiele dzięki różnym ppl, którzy przyczynili się do rozwiązania tego problemu.

0

xcodebuild po prostu zbuduje plik binarny i nie prześle nowo skompilowanego pliku binarnego do iPhone'a.

faktycznie może przesłać (po podpisaniu go), ale nie działają zbyt źle ... może można je uruchomić za pomocą gdb Po podłączeniu do celu, ale jak (IP ?, USB? Usbnet?)?

2

Zapoznaj się z iphone_testify, działa dobrze z OCUnit i Google Toolbox dla Mac, i myślę, że może być możliwe rozszerzenie go o coś takiego jak UISpec.

Pozdrowienia