views:

169

answers:

1

I've been using CppUnit for quite a while now (and am happy with it). As we are using more and more parts of the boost library I had a short look on boost.test and I'm wondering now if I should switch to boost.test in a new project or not.

Can anyone here tell me about the differences between the two frameworks and the benefits (if there are any) of using boost.test?

+6  A: 

Do yourself a favor and go straight to Google Test, which makes CppUnit and boost::unit_test look clunky and repetitive.

For example, say you have a simple fixture:

class MyFixture : public ::testing::Test
{
  protected:
  int foo;

  virtual void SetUp() { foo = 0; }
};

To add a test to your fixture, write it!

TEST_F(MyFixture, FooStartsAtZero) {
  EXPECT_EQ(0, foo);
}

That's all you need. Notice the lack of explicit testsuite declarations or a separate agenda that repeats all your tests' names.

Compile it as in

$ g++ -o utest utest.cpp -lgtest -lgtest_main

and run your test to get

Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from MyFixture
[ RUN      ] MyFixture.FooStartsAtZero
[       OK ] MyFixture.FooStartsAtZero (0 ms)
[----------] 1 test from MyFixture (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.

(Run it yourself to see the nice green text for passing tests!)

This is only the beginning. Take a look at the Google Test primer and the advanced guide to see what else is possible.

Greg Bacon
+1 I was asking myself the same question, and this answer has prompted me to look at Google Test. Thanks.
LeonixSolutions
Thanks for posting this answer! It doensn't really answer my question, but it pointed me to a unit test framework that I didn't know yet and that looks really promising.What I like most at the first glance is the way how test cases are expressed: the shortest possible form!
chrmue
@chrmue Thanks for considering it! You'll be thrilled with Google Test's power and expressiveness.
Greg Bacon