Google C++ Testing Framework Part 2: Assertion
Concepts A test case contains one or many tests. ◦ You should group your tests into test cases that reflect the structure of the tested code. ◦ When multiple tests in a test case need to share common objects and subroutines, you can put them into a test fixture class. A test program can contain multiple test cases.
Assertions Assertion are statements that check whether a condition is true An assertion's result can be success, nonfatal failure, or fatal failure. If a fatal failure occurs, it aborts the current function; otherwise the program continues normally. Tests use assertions to verify the tested code's behavior. If a test crashes or has a failed assertion, then it fails; otherwise it succeeds.
Types of assertions ASSERT_* : generate fatal failures when they fail, and abort the current function. ◦ if it doesn't make sense to continue when the assertion in question fails. EXPECT_* : generate nonfatal failures, which don't abort the current function. ◦ allow more than one failures to be reported in a test.
Demo
Add Custom Message
Basic Assertions Remember, when they fail, ASSERT_* yields a fatal failure and returns from the current function, EXPECT_* yields a nonfatal failure, allowing the function to continue running. In either case, an assertion failure means its containing test fails.
Binary Comparison
String Comparison
Simple Tests Steps to create tests ◦ Use the TEST() macro to define and name a test function, These are ordinary C++ functions that don't return a value. ◦ In this function, along with any valid C++ statements you want to include, use the various Google Test assertions to check values. ◦ The test's result is determined by the assertions; if any assertion in the test fails (either fatally or non-fatally), or if the test crashes, the entire test fails. Otherwise, it succeeds. Multiple tests inside body, only one name
Demo -Factorial CodeConcepts mapping Google Test groups the test results by test cases, so logically- related tests should be in the same test case; ◦ the first argument to their TEST() should be the same. Test case ◦ FactorialTest. Two tests, ◦ HandlesZeroInput and ◦ HandlesPositiveInput,
Any problem? Mixed Implementation and testing How to separate? e/browse/#svn/trunk/samples e/browse/#svn/trunk/samples Example 1