2013-05-17 27 views
8

Ponieważ nie odpowiedział (Może nie mogę go znaleźć) poprzednio, badałem na następujące pytanie:Interfejs Androida z TeamCity

Jak wykonywać zautomatyzowanych testów funkcjonalnych na urządzeniach z systemem Android z robotium i raportu je do serwera ciągłej integracji, takiego jak TeamCity?

Odpowiedz

12

Ponieważ nie znalazłem żadnej odpowiedzi na to konkretne pytanie, zbadałem sprawę. Oto wyniki mojego dochodzenia i szybkie How-To, aby pomóc ludziom w przeprowadzaniu zautomatyzowanych testów funkcjonalnych w aplikacjach Androidowych za pomocą robotów, a następnie raportować wyniki na serwerze ciągłej integracji, takim jak TeamCity. Pamiętaj, że to nie jest najlepsze rozwiązanie, ale czułem, że ludzie mogą znajdować się w takiej samej sytuacji jak ja. Więc oto jest!

Poniższe biblioteki zostały wykorzystane:

  • Robotium (https://code.google.com/p/robotium/): To jest Android ramy automatyzacji testów. Pomaga w przeprowadzaniu automatycznych testów, takich jak klikanie przycisków, automatyczne wypełnianie tekstu i wiele innych rzeczy.
  • Android Junit Report (http://zutubi.com/source/projects/android-junit-report/): Ta biblioteka jest bardzo przydatna do opublikowania wyniku testu w nadającym się do wykorzystania formacie xml. Jeśli chcesz uruchomić swoje testy przez Eclipse, widać wyniki swoich badań w ruchu, ale w celu ich eksport, biblioteka ta jest bardzo przydatna

Zakładając, że masz projekt Android przetestować, stworzyć projekt testowy Android (Eclipse ma dobry przepływ pracy, aby go stworzyć) i skonfigurować go do pracy z Robotium. Wyczerpujące i szczegółowe instrukcje, jak to zrobić, można znaleźć tutaj: https://code.google.com/p/robotium/wiki/Getting_Started

Następnie musisz dodać raport Android Junit do swojego projektu, aby móc pobrać wyniki testów. W tym celu dodaj bibliotekę Android Junit Report * .jar do folderu lib i dodaj ją do swojej ścieżki budowania (w Eclipse: Projekt -> Właściwości -> Ścieżka budowania Java -> Biblioteki -> Dodaj zewnętrzny słoik) .

Musisz również zmienić biegacza testu swojego projektu. W AndroidManifest.xml swojego projektu badawczego dodać następujące:

<instrumentation 
     android:name="com.zutubi.android.junitreport.JUnitReportTestRunner" 
     android:targetPackage="<insert your package ex:com.alth.myproject" /> 

Gdy to nastąpi, powinieneś być w stanie uruchomić swoje testy prawidłowo. Wyniki badań powinny być dostępne w urządzeniu (w następującym folderze /data/data//files/junit-report.xml)


Następnym krokiem jest skonfigurowanie Twój TeamCity zbudować kroki do wykonaj wszystkie niezbędne czynności, aby przeprowadzić testy. Należy pamiętać, że moje rozwiązanie może nie być optymalne!

  • Budowa krok 1: Clean - Command Line Runner - Ten etap budowy mogą być opcjonalne w zależności od tego, jak zdecydujesz się tworzyć pliki build.xml i takie decyzje kompilacji.

    rm -rf <report folder> 
    rm -rf <Project build.xml> 
    rm -rf <Test project build.xml> 
    android update project -p <Path to your project> 
    android update test-projecct -m <Path to your project, relative to the test project> -p <Path to your test project> 
    
  • Budowa krok 2: Uruchom AVD - Command Line runner - Ten etap budowy uruchamia android urządzenie wirtualne.Ten krok może być opcjonalny, jeśli zdecydujesz się uruchomić testy na rzeczywistym urządzeniu.

    emulator -avd <nameOfYourAvd> -no-boot-anim & 
    sleep 45 
    

    W & unika budować zostać przerwana przez uruchomienie urządzenia wirtualnego (To podstawowe komendy shell). Komenda sen służy do próby niech AVD być gotowy do następnego etapu budowy

  • etap budowy 3: Test app release - Ant biegacz: Budowanie projektu testowego, należy go zainstalować na urządzeniu wirtualnym

    Path to build xml file : <Path to your test project>/build.xml 
    Additional Ant command line parameters : -f <Path to your test project>/build.xml clean debug install -Dsdk.dir=<Path to your android sdk> 
    
  • Budowa krok 4: AVD Unlock - linia poleceń biegacz: odblokować ekran AVD dla celów testowania

    bash avdUnlock.sh 
    

    Ciało avdUnlock.sh tutaj: (http://pastie.org/7919761). Ten skrypt wysyła informacje na zwykły port AVD w celu odblokowania ekranu. Można to poprawić, wysyłając polecenie tylko do określonego portu i zmieniając krok 2, aby dodać konkretny port do uruchomienia emulatora. To jednak nie jest tak naprawdę częścią tego jak-to

  • Budowa krok 5: Uruchom testy - Command Line Runner: uruchamianie testów

    adb shell pm list instrumentation 
    adb shell am instrument -w <insert your test package ex:com.alth.myproject.test>/com.zutubi.android.junitreport.JUnitReportTestRunner 
    

    Pierwsze polecenie adb może zostać usunięty. Jest to tylko do celów debugowania, aby zobaczyć, które oprzyrządowanie zostało zainstalowane na urządzeniu.

  • Budowa krok 6: Fetch testy - linia poleceń biegacz: Pobierz testy sprawozdanie z urządzenia

    adb pull /data/data/<insert your project package ex:com.alth.myproject>/files/junit-report.xml <report folder>/junit-report.xml 
    
  • etapu budowy 7: Final emulator kill - Command Line biegacza: Zabij systemem Android urządzenie wirtualne

    adb emu kill 
    
  • Dodatkowe funkcje produkcji: przetwarzania XML - typ raportu Raport: Ant JUnit

    Monitoring rules : <report folder>/*.xml 
    

ten Jak-to zdecydowanie nie jest optymalny, ale odpowiedzi na oryginalne pytanie. W ten sposób można pobrać raport z testów funkcjonalnych Androida i przekazać go do teamcity w celu monitorowania wyników testu.

Mam nadzieję, że to pomoże komuś, a ja spróbuję odpowiedzieć na twoje pytania, jeśli masz jakieś.

Al_th