I have a possibly unpopular opinion that assertion libraries that depend on throwing exceptions are bad API design for unit testing. Mainly because most test functions end up with multiple assertions in them and exceptions abort the test function early.<p>Many times understanding what causes a unit test failure is easier to debug if you can see the rest of the unit tests all at once.<p>I much prefer testing frameworks that use simple true/false tests and not exceptions like Go's unit testing library or Perl's TAP library.