Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Tulis Tes Berbasis Host di Federasi Dagang

Halaman ini menjelaskan cara menulis pengujian perangkat gaya JUnit4 yang dijalankan oleh host. Artinya, sisi host dari harness akan memicu tindakan terhadap perangkat.

Perhatikan bahwa kami menganggap pengujian "sisi host" dan pengujian "berbasis host" menjadi sedikit berbeda:

  • pengujian yang digerakkan oleh host: Merupakan pengujian yang berjalan pada host yang berinteraksi dengan satu atau beberapa perangkat. Sistem yang diuji (SUT) tidak ada di host itu sendiri, tetapi sedang diuji dari host.
  • host-side test: Apakah pengujian yang dijalankan murni pada host dan menguji sesuatu hanya pada host, misalnya pengujian unit.

Mengapa membuat tes berbasis host daripada tes instrumentasi?

Beberapa pengujian mungkin mengharuskan Anda memengaruhi status perangkat secara keseluruhan, seperti mengeluarkan perintah reboot. Dalam kasus uji instrumentasi, booting ulang akan mematikan instrumentasi, pengujian tidak dapat dilanjutkan, dan tidak ada hasil yang akan tersedia.

Pengujian yang digerakkan host juga dapat mendorong langkah-langkah penyiapan tambahan yang memerlukan interaksi dengan perangkat eksternal tempat pengujian bergantung.

Pengujian berbasis host dapat menangani kasus penggunaan ini dan memungkinkan pengujian perangkat lanjutan dengan lebih banyak skenario. Jika Anda berada dalam situasi itu, menulis pengujian berbasis host paling masuk akal.

Bagaimana tes berbasis host ditulis di TF?

Berikut ini contohnya:

@RunWith(DeviceJUnit4ClassRunner.class)
public class SampleHostJUnit4DeviceTest extends BaseHostJUnit4Test {
    @Before
    public void setUp() throws Exception {
       // Some setup
    }

    @Test
    public void testCheckWeHaveDevice() throws Exception {
        Assert.assertNotNull(getDevice());
    }
}

Tes berbasis host di Federasi Dagang didorong oleh pelari tes DeviceJUnit4ClassRunner JUnit4. Struktur keseluruhan kelas pengujian sama dengan pengujian JUnit4 biasa:

  • @BeforeClass
  • @Before
  • @Test
  • @After
  • @AfterClass
  • Assume , Assert

Memperluas BaseHostJunit4Test adalah cara untuk mewarisi API utilitas pengujian yang berguna seperti:

  • installPackage : Memungkinkan untuk menginstal APK di perangkat target.
  • installPackageAsUser : Memungkinkan untuk menginstal APK sebagai pengguna di perangkat target.
  • uninstallPackage : Memungkinkan untuk menghapus APK.
  • isPackageInstalled : Periksa apakah sebuah paket diinstal atau tidak.
  • hasDeviceFeature : Periksa apakah perangkat mendukung fitur atau tidak. ( pm list features )
  • runDeviceTests(DeviceTestRunOptions options) : Jalankan pengujian instrumentasi terhadap perangkat target menggunakan DeviceTestRunOptions untuk menangani semua opsi yang memungkinkan.

Juga berikan akses ke objek perangkat Tradefed:

  • getDevice() : Mengembalikan objek perangkat TF untuk memanipulasi perangkat.
  • getBuild() : Mengembalikan objek TF info build untuk mendapatkan informasi tentang build.
  • getAbi() : Menampilkan ABI tempat pengujian dijalankan.

Dukungan tradefed: Persiapan dan pembersihan perangkat per kelas

JUnit4 @BeforeClass dan @AfterClass hanya berlaku untuk metode statis, yang membuatnya tidak mungkin untuk menggunakan penangan #getDevice() untuk melakukan penyiapan atau pembersihan khusus perangkat, satu kali, per kelas. Untuk mengatasi masalah ini, gunakan anotasi Tradefed.

  • @BeforeClassWithInfo: Berjalan sebelum penjelasan @BeforeClass
  • @AfterClassWithInfo: Berjalan setelah anotasi @AfterClass
   @BeforeClassWithInfo
   public static void beforeClassWithDevice(TestInformation testInfo) {
       assertNotNull(testInfo.getDevice());
       testInfo.properties().put("mytest:test-prop", "test");
   }

   @AfterClassWithInfo
   public static void afterClassWithDevice(TestInformation testInfo) {
       assertNotNull(testInfo.getDevice());
       testInfo.properties().put("mytest:test-prop", "test");
   }

TestInformation memungkinkan Anda menggunakan perangkat dan menyimpan properti yang dapat digunakan baik dalam lingkup statis maupun non-statis. BaseHostJUnit4Test mendukung mendapatkan TestInformation dalam cakupan non-statis melalui #getTestInformation() .

Jika Anda tidak memperluas BaseHostJUnit4Test , Anda dapat mengimplementasikan ITestInformationReceiver untuk menerima objek TestInformation .

Bagaimana cara mengonfigurasi pengujian berbasis host di Tradefed?

Dalam file konfigurasi XML Tradefed, tes berbasis host dijalankan melalui runner HostTest .

<test class="com.android.tradefed.testtype.HostTest" >
    <option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>