2011-06-21 37 views
3

我有一套測試可以在幾種不同的模式下運行。除了一些全局配置或夾具配置外,測試用例代碼是相同的。使用不同的「參數」兩次提升測試庫運行套件

在boost測試庫中有沒有一些方法可以實現這一點,而無需爲所有單獨的測試用例編寫包裝?

注意這不是一個命令行開關,它應該是同一執行的一部分。

回答

3

unary function test case可能是你想要的。唯一的缺點是自動註冊(可能基於某種工廠功能)似乎不支持它。

它們也有test case template並且它具有自動註冊功能,所以如果沒有太多的配置,就可以通過爲每個配置定義類型來濫用它。

編輯:測試用例模板可以使用這樣的事情:

// Parameter is the type of parameter you need. Might be anything from simple int (in 
// which case the template parameter may be a value, not reference) to complex object. 
// It just has to be possible to create (static) global instances of it. 

template <const Parameter &param> 
struct Fixture { 
    // do whatever you want, param is normal object reference here 
    // it's not a member, but you can: 
    const Parameter &getParameter() { return param; } 
} 

static Parameter p1(whatever); 
static Parameter p2(something_else); 
// ... 

typedef boost::mpl::list<Fixture<p1>, Fixture<p2> > Fixtures; 

BOOST_AUTO_TEST_CASE_TEMPLATE(test, F, Fixtures) 
{ 
    F fixture; // Unfortunately you can't make it true fixture, so you have to have instance 
    // Test what you want 
} 
+0

這些不太達到我想要的,因爲參數會影響測試套件裏面的一切。我仍然必須編寫包裝。儘管模板測試的文檔非常少,但我不能說它是否可行。 –

+0

那麼,模板允許自動註冊,所以編寫的代碼更少,但測試用例仍然需要顯式使用模板參數(類似於通過構建本地實例手動使用夾具)。 –

+0

這可能確實有效。在測試用例中使用參數不是問題。測試層次不理想(我想要兩個套件運行,不是每個測試都重複),但我會看看它是如何工作的。 –

相關問題