在Google Test中,当我运行以下测试时:
void ThrowInvalidArgument()
{
throw new std::invalid_argument("I am thrown an invalid_argument");
}
TEST(ExpectExceptions, Negative)
{
ASSERT_THROW(ThrowInvalidArgument(), std::invalid_argument);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下失败:
error: Expected: ThrowInvalidArgument() throws an exception
of type std::invalid_argument.
Actual: it throws a different type.
[ FAILED ] ExpectExceptions.Negative (1 ms)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
你正在抛出一个std::invalid_argument*类型的实例,即一个指针.
改为抛出一个对象:
void ThrowInvalidArgument()
{
throw std::invalid_argument("I am thrown an invalid_argument");
// ^ (no new)
}
Run Code Online (Sandbox Code Playgroud)