2013-10-16 40 views
5

升壓單元測試我有共享完全相同的API和功能(它們被包裝不同第三方API來提供相同的功能)兩類。這兩個類不是有一個共同的基類/接口。重複與不同類類型

我對他們的一個升壓單元測試,並希望在其上運行其他完全相同的測試,但現在我只知道如何複製粘貼測試和查找/替換類名。除了煩惱不得不在兩個地方更新測試外,這也意味着不能保證兩個測試的測試是一致的。

有沒有辦法,我可以「模板」一個測試用例?如果不是,你會如何解決這個問題?我到目前爲止所能想到的是(類似於僞代碼):

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>(); 
} 

但我甚至不知道這是否可行。

回答

4

您應該看看Test case template,因爲它們提供了使用不同數據類型運行同一組測試的方法。據我瞭解,使用自動註冊宏,你可以提供一個測試用例模板:

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

其中tests_types是類型的MPL列表:

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

這些例子中提取,並從適應Boost測試文檔。