boost.test与CppUnit

时间:2010-06-23 09:09:58

标签: c++ boost cppunit boost-test

我一直在使用CppUnit已经有一段时间了(我很满意)。当我们使用boost库的越来越多的部分时,我对boost.test进行了简短介绍,现在我想知道是否应该在新项目中切换到boost.test。

这里有人能告诉我这两个框架之间的区别以及使用boost.test的好处(如果有的话)吗?

2 个答案:

答案 0 :(得分:41)

这比Boost.Test替代方案更不笨:

class MyFixture { MyFixture() { /* setup here */} };

BOOST_AUTO_TEST_CASE( my_test, MyFixture )
{
    BOOST_CHECK_EQUAL(0, foo);
}

宏确实有点长,但这更安全,建议在C ++中练习。

我还没有看到一个选择Google Test的技术理由(而且我知道很多人更喜欢Boost.Test)。其余的只是你的偏好。

答案 1 :(得分:17)

帮自己一个忙,直接进入Google Test,这使得CppUnit和boost::unit_test看起来很笨重。

例如,假设您有一个简单的夹具:

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

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

要为灯具添加测试,请写下来!

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

这就是你所需要的一切。请注意缺少明确的测试套件声明或重复所有测试名称的单独议程。

将其编译为

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

并运行测试以获取

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.

(自己运行以查看传递测试的漂亮绿色文本!)

这只是一个开始。看看Google Test primeradvanced guide,看看还有什么可能。