diff --git a/UnitTestFrameworkPkg/ReadMe.md b/UnitTestFrameworkPkg/ReadMe.md index d6a3e0c15a..d28cb5cb0a 100644 --- a/UnitTestFrameworkPkg/ReadMe.md +++ b/UnitTestFrameworkPkg/ReadMe.md @@ -59,7 +59,7 @@ reviewed. The paths to the SecureBootVariableLib unit tests are: | Unit Test Source Language | C | C++ | | Register Test Suite | YES | Auto | | Register Test Case | YES | Auto | -| Death/Expected Assert Tests | YES | YES | +| Expected Assert Tests | YES | YES | | Setup/Teardown Hooks | YES | YES | | Value-Parameterized Tests | NO | YES | | Typed Tests | NO | YES | diff --git a/UnitTestFrameworkPkg/Test/GoogleTest/Sample/SampleGoogleTest/SampleGoogleTest.cpp b/UnitTestFrameworkPkg/Test/GoogleTest/Sample/SampleGoogleTest/SampleGoogleTest.cpp index 94cbf2cf0b..2c2765e1e5 100644 --- a/UnitTestFrameworkPkg/Test/GoogleTest/Sample/SampleGoogleTest/SampleGoogleTest.cpp +++ b/UnitTestFrameworkPkg/Test/GoogleTest/Sample/SampleGoogleTest/SampleGoogleTest.cpp @@ -7,7 +7,7 @@ **/ -#include +#include extern "C" { #include #include @@ -229,7 +229,7 @@ TEST_P (MacroTestsAssertsEnabledDisabled, MacroExpectNoAssertFailure) { } /** - Sample unit test using the ASSERT_DEATH() macro to test expected ASSERT()s. + Sample unit test using the EXPECT_ANY_THROW() macro to test expected ASSERT()s. **/ TEST_P (MacroTestsAssertsEnabledDisabled, MacroExpectAssertFailure) { // @@ -242,14 +242,35 @@ TEST_P (MacroTestsAssertsEnabledDisabled, MacroExpectAssertFailure) { // // This test passes because it directly triggers an ASSERT(). // - ASSERT_DEATH (ASSERT (FALSE), ""); + EXPECT_ANY_THROW (ASSERT (FALSE)); // // This test passes because DecimalToBcd() generates an ASSERT() if the // value passed in is >= 100. The expected ASSERT() is caught by the unit - // test framework and ASSERT_DEATH() returns without an error. + // test framework and EXPECT_ANY_THROW() returns without an error. // - ASSERT_DEATH (DecimalToBcd8 (101), ""); + EXPECT_ANY_THROW (DecimalToBcd8 (101)); + + // + // This test passes because DecimalToBcd() generates an ASSERT() if the + // value passed in is >= 100. The expected ASSERT() is caught by the unit + // test framework and throws the C++ exception of type std::runtime_error. + // EXPECT_THROW() returns without an error. + // + EXPECT_THROW (DecimalToBcd8 (101), std::runtime_error); + + // + // This test passes because DecimalToBcd() generates an ASSERT() if the + // value passed in is >= 100. The expected ASSERT() is caught by the unit + // test framework and throws the C++ exception of type std::runtime_error with + // a message that includes the filename, linenumber, and the expression that + // triggered the ASSERT(). + // + // EXPECT_THROW_MESSAGE() calls DecimalToBcd() expecting DecimalToBds() to + // throw a C++ exception of type std::runtime_error with a message that + // includes the expression of "Value < 100" that triggered the ASSERT(). + // + EXPECT_THROW_MESSAGE (DecimalToBcd8 (101), "Value < 100"); } INSTANTIATE_TEST_SUITE_P ( @@ -266,6 +287,11 @@ TEST (MacroTestsMessages, MacroTraceMessage) { // Example of logging. // SCOPED_TRACE ("SCOPED_TRACE message\n"); + + // + // Always pass + // + ASSERT_TRUE (TRUE); } int