2014-10-11 195 views
0

我有一個vector<string>和在某個位置返回一個字符的方法(在類中)。 這一切都發生在try catch塊中。googletesting超出範圍

的問題,當我嘗試谷歌測試這種方法,特意調用std::out_of_range異常,並EXPECT_THROW(method, std::out_of_range),而是獲得通過測試我得到幾個.what()錯誤信息vector::_M_range_check和測試失敗的出現。

提到的方法

char ClassA::getC(int x, int y){ 
    try{ 
     return vec.at(y).at(x); 

    catch(const out_of_range& e){ 
     cout << '\n' << e.what() << '\n'; 
     return 0; 
    } 
} 

也有一個類似的void方法,在一定的位置,我只是叫vec.at(y).at(x) = c;,並在這裏我也想搭上std::out_of_range

那麼,什麼是設置一個不同的字符我做錯了?

回答

1

EXPECT_THROW(method, std::out_of_range)

什麼你說這裏是您所期望的方法拋出此異常。那是錯的。

這絕不會發生,因爲該方法中處理該異常。

錯誤消息來自cout << ...

在更基礎的層面上,您測試的功能是錯誤的。這不是您想要在應用程序中處理異常的方式。

+0

所以我應該刪除try catch? – TheGuyWithStreetCred 2014-10-11 12:50:43

+0

很可能......如果應用程序依賴它,那麼您將需要做更多的工作。 – 2014-10-11 12:52:22

+0

你有什麼提示:P – TheGuyWithStreetCred 2014-10-11 12:59:50