2014-10-11 153 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