2013-10-16 19 views
5

ile bir Yükseltme birimi testini tekrarlayın Aynı API'yi ve işlevselliği paylaşan iki sınıfım var (aynı işlevselliği sağlamak için farklı 3. taraf API'lerini tamamlıyorlar). İki sınıf,'un ortak bir ana sınıfı/arabirime sahip olmadığından yapar.Farklı sınıf tipi

ben onlardan biri için bir boost birimi testi, diğer yandan aynı kesin testler yapmak istiyorum ama şu anda sadece-copy yapıştırmak testi ve bulmak/sınıf adını değiştirmek için biliyorum. Testleri iki yerde güncellemek zorunda kalmanın sıkıcı olmasının yanı sıra, aynı zamanda iki sınıfın da aynı şekilde test edildiğini garanti etmemektedir.

Bir deneme vakası 'şablonunu' kullanabileceğim bir yol var mı? Yoksa, bunu nasıl çözersiniz? Şu ana kadar aklınıza gelebilecek tüm gibi bir şey (sözde kodu bahane) 'dir:

template<class T> 
void runTests() 
{ 
T t; 
//do tests here 
} 

BOOST_AUTO_TEST_CASE(test_X) 
{ 
runTests<X>(); 
} 
BOOST_AUTO_TEST_CASE(test_Y) 
{ 
runTests<Y>(); 
} 

Ama bu işe yarar mı, onu bile bilmiyorum.

cevap

4

Farklı veri türleri kullanarak aynı test kümesini çalıştırmanın bir yolunu sundukları için Test case template'a bakmalısınız.

BOOST_AUTO_TEST_CASE_TEMPLATE(my_test, T, test_types) 
{ 
    BOOST_CHECK(checkSomethingWithType(T)); 
} 

tests_types türlerinin bir MPL listesi::

typedef boost::mpl::list<X, Y> test_types; 

olanlar örnek çıkarılan ve gelen uyarlanmıştır ben otomatik kayıt makroları kullanarak, anladığım, bir test durumu şablonu sağlayabilir Destek test belgeleri.

İlgili konular