boost.test vs. CppUnit

后端 未结 2 1330
庸人自扰
庸人自扰 2021-01-30 15:09

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 wonderi

相关标签:
2条回答
  • 2021-01-30 15:44

    How is this less clunky than Boost.Test alternative:

    class MyFixture { MyFixture() { /* setup here */} };
    
    BOOST_AUTO_TEST_CASE( my_test, MyFixture )
    {
        BOOST_CHECK_EQUAL(0, foo);
    }
    

    Macros indeed a bit longer, but this is safer and is recommended practice in C++.

    I am yet to see a single technical reason to prefer Google Test (and I know quite a few to prefer Boost.Test). The rest is just your preference.

    0 讨论(0)
  • 2021-01-30 15:49

    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.

    0 讨论(0)
提交回复
热议问题