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 "didorong host" sedikit berbeda:
- pengujian berbasis host: Merupakan pengujian yang berjalan pada host yang berinteraksi dengan satu atau beberapa perangkat. Sistem yang sedang diuji (SUT) tidak berada di host itu sendiri, tetapi diuji dari host.
- pengujian sisi host: Adalah pengujian yang sepenuhnya berjalan di host dan menguji sesuatu hanya di host, misalnya pengujian unit.
Mengapa membuat pengujian yang didorong host, bukan pengujian instrumentasi?
Beberapa pengujian mungkin mengharuskan Anda memengaruhi status perangkat secara keseluruhan, seperti mengeluarkan perintah mulai ulang. Dalam kasus pengujian instrumentasi, mulai ulang akan menghentikan instrumentasi, pengujian tidak dapat dilanjutkan, dan tidak ada hasil yang akan tersedia.
Pengujian yang didorong host juga dapat mendorong langkah penyiapan tambahan yang memerlukan interaksi dengan perangkat eksternal yang menjadi dependensi pengujian.
Pengujian yang didorong host dapat menangani kasus penggunaan ini dan memungkinkan pengujian lanjutan perangkat dengan lebih banyak skenario. Jika Anda berada dalam situasi tersebut, menulis pengujian berbasis host adalah pilihan yang paling tepat.
Bagaimana pengujian berbasis host ditulis dalam TF?
Berikut adalah 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 reguler:
@BeforeClass
@Before
@Test
@After
@AfterClass
Assume
,Assert
Memperluas BaseHostJunit4Test adalah cara untuk mewarisi API utilitas pengujian yang berguna, seperti:
installPackage
: Memungkinkan penginstalan APK pada perangkat target.installPackageAsUser
: Memungkinkan penginstalan APK sebagai pengguna pada perangkat target.uninstallPackage
: Memungkinkan untuk meng-uninstal APK.isPackageInstalled
: Memeriksa apakah paket terinstal atau tidak.hasDeviceFeature
: Memeriksa 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 pengujian.
Dukungan tukar tambah: Penyiapan dan pembersihan perangkat per kelas
@BeforeClass
dan @AfterClass
JUnit4 hanya berlaku untuk metode statis,
sehingga tidak memungkinkan untuk menggunakan pengendali #getDevice()
guna melakukan beberapa
penyiapan atau pembersihan satu kali per class khusus 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 mengimplementasikan
ITestInformationReceiver
agar dapat menerima objek TestInformation
.
Bagaimana cara mengonfigurasi pengujian yang didorong host di Tradefed?
Dalam file konfigurasi XML Tradefed, pengujian yang didorong host dijalankan melalui runner HostTest.
<test class="com.android.tradefed.testtype.HostTest" >
<option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>