【发布时间】:2015-10-04 16:14:10
【问题描述】:
我必须为我的单元测试导致 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;
};
【问题讨论】:
-
尝试分配一个非常大的值数组。
-
@AnonMail 问题是,如果没有 bad_alloc,我只需要一个值。
-
您正在尝试将压力测试作为单元测试进行。通常不推荐这种方式,而且如果不添加一些代码也很难实现,至少使用编译器指令,例如#ifdef TEST_3等。
标签: c++ exception new-operator throw bad-alloc