【发布时间】:2012-09-16 09:19:03
【问题描述】:
我创建了一个类,其中的构造函数中有一些 new 运算符。我已经在构造函数中创建了守卫来管理失败的新运算符,但现在我想测试它。
例如,我有一个这样的构造函数:
Function::Function()
{
try
{
m_pxArgument = new Argument();
}
catch(std::bad_alloc)
{
throw MemoryException();
}
}
是否可以创建一个测试来告诉新操作员失败,以测试我的 catch 代码?
【问题讨论】:
-
我不是专业程序员,但我认为最好在构造函数之外使用
try... -
Argument是你的类/结构吗? -
这只是一个例子,但是try语句必须留在里面,因为真正的类更复杂,我想处理库特定的异常。在这种情况下,std::bad_alloc 是一个有效的异常,但在我看来,它是由内部管理抛出的,这并不好。用户必须对类内部和内部异常一无所知。
-
参数是标准的。我有另一个构造函数,我在其中指定对象必须使用的 Argument(),但在我的实现中可以使用默认值。
标签: c++ unit-testing boost boost-test