我必须为我的单元测试引起bad_alloc(基本上,对于100%的代码覆盖率,我无法改变某些功能)。我该怎么办? 这是我的代码示例。我必须在这里的某处导致bad_alloc。
bool insert(const Value& v) {
Value * new_value;
try {
new_value = new Value;
}
catch (std::bad_alloc& ba){
std::cerr << "bad_alloc caught: " << ba.what() << std::endl;
return false;
}
//...
//working with new_value
//...
return true;
};
答案 0 :(得分:1)
您可以在单元测试中明确throw
std::bad_alloc
。例如
#include <iostream>
#include <new>
void test_throw()
{
throw std::bad_alloc();
}
int main()
{
try
{
test_throw();
}
catch (std::bad_alloc& ba)
{
std::cout << "caught";
}
}
答案 1 :(得分:1)
您可以利用overloading class-specific operator new
:
{"syncsts":[{"status":"1","Id":"9"},{"status":"1","Id":"8"}]}