例外を扱うアサーションマクロです。
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()); }