Use ASSERT when the condition must hold – if it doesn’t the test stops right there. Use this when the remainder of the test doesn’t have semantic meaning without this condition holding.
Use EXPECT when the condition should hold, but in cases where it doesn’t we can still get value out of continuing the test. (The test will still ultimately fail at the end, though.)
The rule of thumb is: use EXPECT by default, unless you require something to hold for the remainder of the tests, in which case you should use ASSERT for that particular condition.
This is echoed within the primer:
Usually
EXPECT_*are preferred, as they allow more than one failures to be reported in a test. However, you should useASSERT_*if it doesn’t make sense to continue when the assertion in question fails.