title: GoogleTest vs CppUnit: The facts
body: <p>In the process of setting our C++ unit testing framework for the next years we shortlisted <strong>GoogleTest</strong> and <strong>CppUnit</strong>. I have some experience with both and my heavy preference is GoogleTest. Anyways to convince my boss I need some <strong>facts</strong> so I did some reading on the Internet, including the manuals, wiki pages and some of the sources. I came up with a list of GoogleTest advantages and a single CppUnit advantage(graphic test runners). Here they are ordered by <strong>perceived</strong> usefulness: </p>
  
  <ul>
  <li>INSTANTIATE_TEST_CASE_P to instantiate a test case with any set of parameters you want, including Cartesian products </li>
  <li>FRIEND_TEST for testing private class members(for all the legacy code) </li>
  <li>turning asserts into breakpoints </li>
  <li>non-fatal asserts </li>
  <li>"out of the box" googlemock integration </li>
  <li>automatic tests detection, no need to enumerate them</li>
  <li>tests can be disabled and enabled </li>
  <li>tests to run can be selected using name patterns </li>
  <li>value/type-parameterized tests </li>
  <li>user-defined predicate asserts </li>
  <li>death tests </li>
  <li>much richer set of asserts </li>
  <li>type asserts  </li>
  <li>asserting on subroutines </li>
  <li>additional debug info can be added to asserts using &lt;&lt;  </li>
  <li>RecordProperty emits last value of property to the XML output </li>
  <li>SCOPED_TRACE helps understand the context of an assertion failure coming from inside a sub-routine or loop. </li>
  <li>xUnit XML output, can be shown by Jenkins right away without a XSLT transformation in between </li>
  <li>supports custom types printers</li>
  <li>time consumed by test indication(I suspect this is also possible with CppUnit but I haven figured it out yet)   </li>
  <li>test event listener API (user-defined plug-ins) </li>
  <li>test shuffling </li>
  <li>no exceptions and RTTI </li>
  </ul>
  
  <p>Am I correct in assuming that all of the above are not supported by CppUnit? Is there an useful GoogleTest feature <strong>not available</strong> in CppUnit I am missing?  </p>
  
  <p>And last but not least: Are there any nice CppUnit features that GoogleTest <strong>lacks</strong>?   </p>
  
  <p>Thanks!</p>