Złożona konfiguracja testów

Niektóre moduły testowe mogą wymagać niestandardowej konfiguracji i zlikwidować etapy, których nie można można przeprowadzać w samym przypadku testowym. Typowe przykłady:

  • zainstaluj inne pliki APK (oprócz testowego pakietu apk)
  • Przekazywanie plików na urządzenie
  • uruchamianie poleceń (np. adb shell pm ...)

W przeszłości zespoły składowe zwykle uciekały się do pisania testów po stronie hosta, i wykonywania takich zadań, a to wymaga wiedzy na temat tego, jak funkcjonuje federacja handlowa. i zwykle zwiększa złożoność modułu testowego .

Korzystając z platformy CTS, wprowadziliśmy koncepcję konfiguracji modułów testowych, tych typowych zadań można wykonać, używając kilku wierszy config. Aby uzyskać maksymalną elastyczność, możesz nawet wprowadzić własny cel, przygotowujący zgodnie z definicją podaną w ITargetPreparer. lub ITargetCleaner, i skonfigurować je do użycia w konfiguracji Twojego modułu testowego.

Konfiguracja modułu testowego dla modułu testowego to wymagany plik XML dodany na górze sekcji folder źródłowy modułu level o nazwie „AndroidTest.xml”. Plik XML ma format pliku konfiguracji wykorzystywanego przez algorytm automatyzacji testów przeprowadzanych przez federację handlową. Obecnie główne tagi obsługiwane w konfiguracji modułu testowego to „target_preparer” i „test” .

Przygotowanie do kierowania

Tag „target_preparer”, jak sama nazwa wskazuje, definiuje element przygotowujący element docelowy (zobacz ITargetPreparer). oferuje metodę konfiguracji, która jest wywoływana przed wykonaniem modułu testowego do testowania; a klasa, do której odwołuje się tag „target_preparer”, także implements ITargetCleaner, jego metoda zakończenia zostanie wywołana po zakończeniu pracy modułu testowego.

Aby użyć wbudowanej wspólnej konfiguracji modułu, dodaj nowy plik „AndroidTest.xml” w folderze najwyższego poziomu modułu testowego i uzupełnij go o takie treści:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

Na przykład możemy dodać następujące tagi opcji (w komentarzu „wstaw” powyżej):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

Te opcje spowodują skonfigurowanie jarzma testowego, aby:

  1. przed wywołaniem modułu testowego wykonaj polecenie powłoki „settings put Secure” 1 cal ułatwień dostępu na urządzeniu
  2. Po zakończeniu modułu testowego wykonaj polecenie powłoki „settings put Secure” ułatwienia dostępu 0”

W tym przykładzie ułatwienia dostępu są włączane/wyłączane odpowiednio przed i po wykonaniu modułu testowego. Ten prosty przykład pokazuje, który zawiera więcej informacji o sposobie korzystania z tagu „option”. Jak pokazano powyżej, Tag może mieć 2 atrybuty: name oraz value. Atrybut name musi odnosić się do jedną z opcji dostępnych przez osoby przygotowujące.

Dokładne przeznaczenie pola wartości zależy od tego, jak zdefiniował on tę opcję: może to być ciąg, liczba, wartość logiczna, a nawet ścieżka pliku. Oto podsumowanie trzech najpopularniejszych sposobów przygotowywania celów:

  • Nazwa klasy: PushFilePreparer

    • short name: push-file
    • function: przenosi dowolne pliki z folderu przypadku testowego do miejsce docelowe na urządzeniu
    • Uwagi:
      • ten moduł przygotowujący może przekazać dane z folderu do folderu lub pliku do pliku; które że nie można przekazać pliku do folderu na urządzeniu. określ nazwę pliku docelowego także w tym folderze
    • opcji:
      • push-file:specyfikacja push określająca plik lokalny w ścieżce. w którym należy go umieścić na urządzeniu. Można się powtarzać. Jeśli kilka pliki są skonfigurowane tak, aby były przekazywane na tę samą ścieżkę zdalną, zostanie przesłany najnowszy.
      • push: (wycofane) specyfikacja push w formacie „/path/to/srcfile.txt->/path/to/destfile.txt” lub „/path/to/srcfile.txt->/path/to/destdir/”. Można się powtarzać. Ścieżka ta może być względna do katalogu modułu testowego lub do katalogu do katalogu.
      • post-push: polecenie do uruchomienia na urządzeniu (z „adb shell <your command>”) po wykonaniu wszystkich prób wypchnięcia. Typowym przypadkiem użycia jest użycie polecenia chmod w celu nadania uprawnień
  • nazwa zajęć: InstallApkSetup

    • short name:install-apk
    • function: przenosi dowolne pliki APK do miejsca docelowego na urządzenie
    • Opcje:
      • nazwa-pliku-testowego: nazwa pakietu APK, na którym chcesz zainstalować plik urządzenia.
      • install-arg: dodatkowe argumenty do przekazania do PM install z myślnikiem na początku, np. „-d”. Mogą się powtarzać
  • nazwa klasy: RunCommandTargetPreparer,

    • short name: run-command
    • function: wykonuje dowolne polecenia powłoki przed testem lub po nim. wykonanie modułu
    • Opcje:
      • run-command:polecenie powłoki adb do uruchomienia. Mogą się powtarzać
      • teardown-command: polecenie powłoki adb uruchamiane na etapie demontażu. Mogą się powtarzać

Zajęcia testowe

Klasa testu to klasa Federacji Handlu, której używa się do wykonania testu.

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

Oto 3 najczęstsze klasy testów:

  • nazwa klasy: GTest

    • short name (krótka nazwa): gtest
    • function:test, który uruchamia natywny pakiet testowy na danym urządzeniu.
    • Opcje:
      • native-test-device-path: ścieżka na urządzeniu, na którym znajdują się testy natywne.
  • nazwa zajęć: InstrumentationTest

    • short name:instrumentacja
    • function:test, który uruchamia pakiet testowy narzędzi na danym urządzeniu.
    • options:
      • package: nazwa pakietu manifestu aplikacji testowej na Androida, która ma zostać uruchomiona.
      • class: nazwa klasy testu do uruchomienia.
      • method: nazwa metody testowej do uruchomienia.
  • nazwa zajęć: AndroidJUnitTest

    • function: test, który uruchamia pakiet testów z instrumentacją na danym urządzeniu za pomocą klasy android.support.test.runner.AndroidJUnitRunner. Jest to główny sposób wykonywania testów z instrumentacją.