例外を扱うアサーションマクロです。
| Fatal | assertionNonfatal | assertionVerifies |
|---|---|---|
| ASSERT_THROW(statement, exception_type) | EXPECT_THROW(statement, exception_type) | statement throws an exception of the given type |
| ASSERT_ANY_THROW(statement) | EXPECT_ANY_THROW(statement) | statement throws an exception of any type |
| ASSERT_NO_THROW(statement) | EXPECT_NO_THROW(statement) | statement doesn't throw any exception |
ASSERT_THROW
ASSERT_THROWマクロは、指定した例外が送出されることを検証します。
第2引数に送出されるはずの例外の型を指定します。例外のオブジェクトではなく、例外の型であることに注意してください。
void throwRuntimeError() { throw std::runtime_error("error"); } TEST(ExceptTest, Test1) { ASSERT_THROW(throwRuntimeError(), std::runtime_error); }
第2引数には、送出される例外の基底クラスを指定してもかまいません。
TEST(ExceptTest, Test2)
{
ASSERT_THROW(throwRuntimeError(), std::exception);
}
ASSERT_ANY_THROW
ASSERT_ANY_THROWマクロは、任意の例外の送出を検証します。
TEST(ExceptTest, Test4)
{
ASSERT_ANY_THROW(throwRuntimeError());
}
ASSERT_NO_THROW
ASSERT_NO_THROWマクロは、例外が送出されないことを検証します。
TEST(ExceptTest, Test5)
{
ASSERT_NO_THROW(throwRuntimeError());
}