因爲我只能猜測你當前的代碼是什麼樣子,我就提供你的測試用例如何能看起來像一個BOOST_CHECK_THROW
的exaple:
BOOST_AUTO_TEST_CASE(testMissingServer) {
MyClient client;
BOOST_CHECK_THROW(
client.connect(someNonexistentServerIP, somePort),
boost::asio::error::Connection_refused
);
}
這樣做手工將是這個樣子:
BOOST_AUTO_TEST_CASE(testMissingServer) {
MyClient client;
try {
client.connect(someNonexistentServerIP, somePort);
BOOST_ERROR("client.connect(someNonexistentServerIP, somePort) did not throw anything. Expected a boost::asio::error::Connection_refused");
} catch(boost::asio::error::Connection_refused const&) {
//ok, this is the expected case
} catch(...) {
BOOST_ERROR("client.connect(someNonexistentServerIP, somePort) did throw an unkown exception, but expected a boost::asio::error::Connection_refused");
}
}
你看這是更繁瑣的,因爲你必須檢查錯誤exceptinos和所有單獨概莫能外。 BOOST_CHECK_THROW
不僅提供了更簡潔和更易讀的測試用例,而且如果您所期望的異常不會拋出,它也會生成有意義的失敗消息。
它完全*不清楚你想達到什麼。據我瞭解你的問題,你已經設法編寫一個測試用例,試圖連接到一個離線服務器時,成功地得到預期的異常。那麼你的問題是什麼? –
謝謝你的迴應Arne。我已經運行我的測試,而不使用任何像BOOST_CHECK_THROW或BOOST_WARN_THROW,我想知道這樣的事情是否有必要?如果我可以運行測試,那麼它們有什麼用處,如果不使用BOOST_CHECK_Throw,e.t.c就可以獲得沒有任何失敗的異常。 – user2911641
哦,我可以*猜*現在你的代碼可能看起來像什麼(你嘗試/「手動」捕獲,並在你發現正確的異常時成功,對吧?),但如果你願意提供它,我們可以告訴你內建boost宏的優點是什麼。我假設你沒有足夠的代表來編輯你自己的問題,所以給我們一個pastebin鏈接到[SSCCE](http://sscce.org),我們會爲你編輯它 –