ASSERT_THROW认为我的异常属于不同的类型

Por*_*Man 2 c++ googletest

在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)

我究竟做错了什么?

Pio*_*cki 8

你正在抛出一个std::invalid_argument*类型的实例,即一个指针.

改为抛出一个对象:

void ThrowInvalidArgument()
{
     throw std::invalid_argument("I am thrown an invalid_argument");
     //   ^ (no new)
}
Run Code Online (Sandbox Code Playgroud)