3
我有一套測試可以在幾種不同的模式下運行。除了一些全局配置或夾具配置外,測試用例代碼是相同的。使用不同的「參數」兩次提升測試庫運行套件
在boost測試庫中有沒有一些方法可以實現這一點,而無需爲所有單獨的測試用例編寫包裝?
注意這不是一個命令行開關,它應該是同一執行的一部分。
我有一套測試可以在幾種不同的模式下運行。除了一些全局配置或夾具配置外,測試用例代碼是相同的。使用不同的「參數」兩次提升測試庫運行套件
在boost測試庫中有沒有一些方法可以實現這一點,而無需爲所有單獨的測試用例編寫包裝?
注意這不是一個命令行開關,它應該是同一執行的一部分。
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 ¶m>
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
}
這些不太達到我想要的,因爲參數會影響測試套件裏面的一切。我仍然必須編寫包裝。儘管模板測試的文檔非常少,但我不能說它是否可行。 –
那麼,模板允許自動註冊,所以編寫的代碼更少,但測試用例仍然需要顯式使用模板參數(類似於通過構建本地實例手動使用夾具)。 –
這可能確實有效。在測試用例中使用參數不是問題。測試層次不理想(我想要兩個套件運行,不是每個測試都重複),但我會看看它是如何工作的。 –