Durumunuzda kullanılacak en iyi birim test çerçevesini belirleyecek birçok değişken vardır. Seçiminizi etkileyebilecek bazı öğeler:
- Hedef dil.
- Hangi kütüphane desteği mevcuttur. mesela libc veya kesilmiş hali.
- Hedefin işletim sistemi. ör. Hiçbiri, FreeRTOS, özel.
XUnit türü çerçevelerin çoğu, kullanışlı olabilecek bazı temel işlev düzeyleri sağlayacaktır. Cunit kullandım geçmişte başarılı bir şekilde . (Ubuntu / Debian üzerinde libcunit1-dev paketi). Çoğu çerçeve libc'nin kullanılabilir olmasını gerektirir, bazıları ek OS desteği gerektirir.
Sadece 3 satır uzunluğundaki diğer bir alternatif ise Minunit .
Testleri indirmek, çalıştırmak ve daha sonra sonuçları geri almak için uygun bir ortam sunabilmeniz gerektiğinden, hedef olarak mikrodenetleyici kullanarak birim testi buldum. Sadece bunu yapabilmenizi sağlayacak platformu yerleştirmek büyük bir iştir.
Benim için işe yarayan başka bir yaklaşım, ana bilgisayar üzerinde birim testi yapmak, sürücüler ve uygulama kodu arasında bir soyutlama katmanı uygulamaktır. Hedef için gcc kullandığınızdan, kodun ana bilgisayarda da derlenmesi gerekir.
Derleme ana bilgisayarında test yapmak, ana bilgisayar işletim sisteminin ve tüm araçlarının tam desteğine sahip olduğunuzdan genellikle çok daha kolaydır. Örneğin, ana bilgisayar üzerinde test yaparken, kablosuz sürücümün hedefte çalışan gerçek sürücü ile aynı arabirime sahip alaycı bir sürümüne sahibim. Ana bilgisayar sürümü, kablosuz paket aktarımını simüle etmek için UDP paketleri kullanır, sahte sürücü paketleri bırakma özelliğini destekler, böylece protokollerimi test edebilirim.
Üzerinde çalıştığım üründe, dişli bir işletim sistemi kullanılıyordu, bu nedenle ana bilgisayar işletim sistemi üzerinde test için soyutlama katmanı pthreads kullandı.
Mükemmel olmasa da, testleri yazıp çalıştırmanız ne kadar kolay olursa, daha fazla test örneği uygulama olasılığınız o kadar artar. Kodun farklı platformlarda çalıştırılmasının bir başka yararı da kodun taşınabilir olduğunu test etmektir. Hedef ve ev sahibi mimariler farklıysa endian hatalarını hızlı bir şekilde alacaksınız.
Şimdi biraz konu dışıyım, ancak bu fikirlerin test çerçevesi ve test yöntemleri seçiminize yardımcı olabileceğini hissedin.