2010-06-28 7 views
7

Şu anda üzerinde herhangi bir birim testi bulunmayan bir kod tabanı üzerinde çalışıyorum. 16 bitlik bir Gömülü işlemci için yazılmıştır ve yazdığım tüm kodlar için birim testleri eklemeyi en azından baştan sonra kodun diğer bölümlerine genişletmek istiyorum.Eski gömülü C uygulaması için birim testleri yazmaya nasıl başlanır - çok sıkı bir şekilde bağlanmış modüller?

Buradaki sorunum, uygulama düzeyindeki her bir modülün (.c dosyası) projedeki diğer C dosyalarına sıkıca bağlı olduğu görülmüştür. Herhangi bir dosya için, bu 2-10 dosyadan herhangi bir yerde olabilir.

  1. nasıl birim testleri yazmaya başlar mı?
  2. Bu sıkı kuplajı gidermek için en iyi/hızlı/en etkili yollar nelerdir?
  3. Ayrıca ünite testleri PC'de (32 bit) çalıştırılacak ve gömülü kod 16 bit işlemci içindir. Kodun bilgisayara aktarılmasında bunun nasıl yapıldığından nasıl emin olabilirim?

cevap

4

İlişkin 3. yapım o bilgisayara taşınabilir olduğundan emin, burada strateji kullandığım var 'uint32' (ya da seçtiğiniz herhangi bir kongre).

Wrap bir koşulu içine türlerini tanımlamak gömülü başlığında bölümü:

#ifndef CORE_TYPE_DEFINITIONS 
#define CORE_TYPE_DEFINITIONS 
typedef long int16; 
/*...*/ 
#endif 

PC için aynı tip tanımlayan bir "PC_Types.h" dosyası oluşturun. Gerektiğinde tüm üretime bağlı fonksiyonlar kullanılabilir olmasını, her dosyayı sararak

#include "PC_Types.h" 
#include "ModuleX.c" //the file under test 

#include "TestHarness.h" //verification functions 

int TestModuleXUnit1(void) 
{ 
    /* setup */ 
    /* call Unit1(); */ 
    /* verify post-conditions */ 
    return result; 
} 

: PC projesinde

#ifdef CORE_TYPE_DEFINITIONS 
#error "Core Types already defined" 
#else 
#define CORE_TYPE_DEFINITIONS 
typedef short int16; 
/*...*/ 
#endif 

aşağıdaki içeren her gömülü c dosya için bir sarmalayıcı oluşturmak. # Sarma dosya dosyanızdaki orijinal kaynak dosyası dahilinde, herhangi bir değişiklik yapılmadan gömülü koddaki güncellemeleri doğrudan kaynak kontrol sisteminizden indirmenize izin verilir. Dahil edilen kaynaktan sonra test fonksiyonlarının eklenmesi, test kodunun, bir genel başlığa sahip olmasa bile, tüm modül işlevlerine tam erişimini sağlar.

+0

Çok teşekkürler, bu benim için başlamak için harika bir yer! – IntelliChick