Ada banyak variabel yang akan menentukan kerangka pengujian unit terbaik untuk digunakan dalam situasi Anda. Beberapa item yang dapat memengaruhi pilihan Anda adalah:
- Bahasa target.
- Dukungan perpustakaan apa yang tersedia. misalnya libc atau versi pengurangannya.
- Sistem operasi target. mis. Tidak ada, FreeRTOS, kustom.
Sebagian besar kerangka kerja tipe xUnit akan memberikan tingkat fungsionalitas dasar yang mungkin berguna. Saya telah menggunakan Cunit dengan beberapa keberhasilan di masa lalu. (paket libcunit1-dev di Ubuntu / Debian). Sebagian besar kerangka kerja akan membutuhkan libc untuk tersedia, beberapa akan membutuhkan dukungan OS tambahan.
Alternatif lain yang panjangnya hanya 3 baris adalah Minunit .
Saya telah menemukan pengujian unit menggunakan mikrokontroler sebagai target untuk menjadi cukup rumit karena Anda harus dapat menyajikan lingkungan yang cocok untuk mengunduh tes, menjalankannya dan kemudian mendapatkan hasilnya kembali. Hanya mendapatkan platform di tempat yang akan memungkinkan Anda untuk melakukan ini adalah tugas besar.
Pendekatan lain yang telah saya ambil yang telah berhasil bagi saya adalah dengan melakukan pengujian unit pada host, menerapkan lapisan abstraksi antara driver dan kode aplikasi. Karena Anda menggunakan gcc untuk target, kode juga harus dikompilasi pada host.
Pengujian pada host kompilasi umumnya jauh lebih mudah karena Anda memiliki dukungan lengkap dari OS host dan semua alat-alatnya. Misalnya, ketika menguji pada host, saya memiliki versi mengejek driver nirkabel saya dengan antarmuka yang sama dengan driver nyata yang berjalan pada target. Versi host menggunakan paket UDP untuk mensimulasikan transfer paket nirkabel, dengan driver tiruan mendukung kemampuan untuk menjatuhkan paket sehingga saya dapat menguji protokol saya.
Pada produk yang saya kerjakan, OS ulir sedang digunakan, jadi lapisan abstraksi untuk pengujian pada OS host menggunakan pthreads sebagai gantinya.
Meskipun tidak sempurna, semakin mudah bagi Anda untuk menulis dan menjalankan tes, semakin besar kemungkinan Anda untuk menerapkan lebih banyak kasus uji. Manfaat lain dari menjalankan kode pada platform yang berbeda adalah untuk menguji bahwa kode tersebut portabel. Anda akan dengan cepat mengambil kesalahan endian jika arsitektur target dan host berbeda.
Saya sekarang sedikit keluar dari topik, tetapi merasa ide-ide ini dapat membantu dengan pilihan Anda kerangka uji dan metode pengujian.