Halaman ini menjelaskan cara menulis pengujian perangkat gaya JUnit4 yang didorong oleh host. Artinya, sisi host harness akan memicu tindakan terhadap perangkat.
Perhatikan bahwa kami menganggap pengujian "sisi host" dan pengujian "yang didorong host" sedikit berbeda:
- pengujian yang digerakkan host: Adalah pengujian yang berjalan di host yang berinteraksi dengan satu atau beberapa perangkat. Sistem yang diuji (SUT) tidak ada di host itu sendiri, tetapi sedang diuji dari host.
- pengujian sisi host: Adalah pengujian yang murni berjalan di host dan menguji sesuatu hanya di host, misalnya pengujian unit.
Mengapa membuat pengujian yang digerakkan host, bukan pengujian instrumentasi?
Beberapa pengujian mungkin mengharuskan Anda memengaruhi status keseluruhan perangkat, seperti mengeluarkan perintah mulai ulang. Dalam kasus pengujian instrumentasi, reboot akan menghentikan instrumentasi, pengujian tidak dapat dilanjutkan, dan tidak ada hasil yang tersedia.
Pengujian yang didorong host juga dapat mendorong langkah-langkah penyiapan tambahan yang memerlukan interaksi dengan perangkat eksternal yang menjadi dasar pengujian.
Pengujian yang digerakkan host dapat menangani kasus penggunaan ini dan memungkinkan pengujian lanjutan perangkat dengan lebih banyak skenario. Jika Anda berada dalam situasi tersebut, menulis pengujian yang didorong host adalah pilihan yang paling tepat.
Bagaimana cara menulis pengujian yang digerakkan host di TF?
Berikut 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());
}
}
Pengujian yang didorong host di Trade Federation didorong oleh runner pengujian JUnit4 DeviceJUnit4ClassRunner. Struktur keseluruhan class 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
: Mengizinkan penginstalan APK di perangkat target.installPackageAsUser
: Mengizinkan penginstalan APK sebagai pengguna di perangkat target.uninstallPackage
: Mengizinkan peng-uninstalan APK.isPackageInstalled
: Periksa apakah 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 kemungkinan opsi.
Berikan juga akses ke objek perangkat Tradefed:
getDevice()
: Menampilkan objek perangkat TF untuk memanipulasi perangkat.getBuild()
: Menampilkan objek TF info build untuk mendapatkan informasi tentang build.getAbi()
: Menampilkan ABI yang digunakan untuk menjalankan pengujian.
Dukungan Tradefed: Persiapan dan pembersihan perangkat per kelas
@BeforeClass
dan @AfterClass
JUnit4 hanya berlaku untuk metode statis,
sehingga tidak memungkinkan penggunaan handler #getDevice()
untuk melakukan beberapa
penyiapan atau pembersihan per kelas satu kali yang khusus untuk perangkat. Untuk mengatasi masalah ini, gunakan anotasi Tradefed.
- @BeforeClassWithInfo: Berjalan sebelum anotasi @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 dalam cakupan statis atau non-statis. BaseHostJUnit4Test
mendukung
mendapatkan TestInformation
dalam cakupan non-statis melalui #getTestInformation()
.
Jika tidak memperluas BaseHostJUnit4Test
, Anda dapat menerapkan
ITestInformationReceiver
untuk menerima objek TestInformation
.
Bagaimana cara mengonfigurasi pengujian yang didorong host di Tradefed?
Dalam file konfigurasi XML Tradefed, pengujian yang didorong host dijalankan melalui peluncur HostTest.
<test class="com.android.tradefed.testtype.HostTest" >
<option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>