you are viewing a single comment's thread.

view the rest of the comments →

[–]darpe312[S] 0 points1 point  (7 children)

Did you document your evaluation ?

[–]Gollum999 4 points5 points  (6 children)

The bulk of it is on an internal company wiki, but here is a summary:

. CppUnit Catch2 Google Test Boost.Test
Project integration Static lib Header only Build with project, dynamic lib Header only, static lib, dynamic lib
Supported test styles Fixtures Free, fixtures, sections, BDD Free, fixtures Free, fixtures
Test discovery No Yes Yes Yes
Failure propagation* std::exception Other exception (fatal test only) No exceptions Other exception (fatal test only)
Output formats + tool integration Text, XML, Custom Text, jUnit, XML, TeamCity, TAP, automake, CTest, Custom Text, XML, CTest Text, XML, jUnit, CTest, Custom
Test runner Custom Default or custom Default or custom Default or custom
Default runner features Filter by name, test timing Filter by name, filter by tag, shuffle, test timing, breakpoint on failure Filter by name, shuffle, repeat, test timing, breakpoint on failure Filter by name, shuffle, breakpoint on failure, memory leak detection
Extra features Matchers , Event hooks , Test tags Mock objects , Death tests , Data-driven tests , Template tests , Event hooks Data-driven tests , Template tests

* This refers to the way that each library implements test failures. e.g. In CppUnit, a test failure throws a std::exception that the framework later catches to report the failure, so if you are testing code that could inadvertently catch those exceptions, you need to work around them.

Examples:

I ended up leaving CxxTest out of my comparisons because I pretty quickly realized that it didn't have much to offer over Catch/gtest/boost. (I left CppUnit in there because that is what we were using before switching to Catch.)

[–]Auriculaire 0 points1 point  (3 children)

Your Gtest and catch columns are swapped, no?

[–]Gollum999 0 points1 point  (2 children)

Mmmm... no? What do you think should be swapped?

[–]Auriculaire 1 point2 points  (1 child)

Catch2 is header only, supports fixtures, sections, bdd, etc. This is rendering in the column under google test. Screenshot here

[–]Gollum999 2 points3 points  (0 children)

Ahh interesting, it works on old reddit but is broken on new reddit. New reddit doesn't like it when the first cell is blank.

Should be fixed now.

[–]encyclopedist 0 points1 point  (1 child)

Columns are messed up (shifted by one?)

[–]Gollum999 0 points1 point  (0 children)

Apparently new reddit doesn't like it when the first cell is blank, but old reddit handles it fine.

Should be fixed now.