【问题标题】:HOWTO start unit testing with boost C++如何使用 boost C++ 开始单元测试
【发布时间】:2016-02-24 04:23:02
【问题描述】:

我在文件中有以下基本测试:

//test.cpp
#define BOOST_TEST_MODULE test_module_name
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE(first_test)
{
    int i = 1;
    BOOST_TEST(i); 
    BOOST_TEST(i == 2); 
}

使用 gcc 编译和链接

gcc -L usr/local/lib/ -I usr/local/include/ \
    -c test/test.cpp -lboost_unit_test_framework \
    -lboost_test_exec_monitor -o build/test.out

当我运行 test.out 时出现以下错误

bash: ./test.out: cannot execute binary file: Exec format error

我认为这个问题可能与这个文件没有 main 函数的事实有关,这是因为我希望 test exec monitor 运行这个测试,而这并没有发生。

Q1) 我能否获得详细的 HOWTO 使用 boost 进行基本单元测试

Q2) exec monitor 运行这些测试需要什么?

【问题讨论】:

标签: c++ unit-testing gcc boost


【解决方案1】:

您提供的 -c 选项仅生成目标文件。您需要链接它以生成可执行文件。

【讨论】:

    【解决方案2】:

    您的测试需要在test suite 中运行,例如BOOST_AUTO_TEST_SUITE.
    我通常在每个单元测试文件中放一个,例如:

    #include "via/geometry/wgs84/derived_parameters.hpp"
    #include <boost/test/unit_test.hpp>
    
    BOOST_AUTO_TEST_SUITE(Test_WGS84)
    
    BOOST_AUTO_TEST_CASE(test_wgs84_parameters)
    {
      // primary_parameters
      BOOST_CHECK_EQUAL(6378137.0,        wgs84::a);
      BOOST_CHECK_CLOSE(0.00335281068118, wgs84::f, 0.000001); // 0.000001% tolerance
    
      // derived_parameters
      BOOST_CHECK_CLOSE(6356752.3141,     wgs84::b,   0.0000001);
      BOOST_CHECK_CLOSE(0.00669437999014, wgs84::e_2, 0.0000001);
      BOOST_CHECK_CLOSE(0.08181919084262, wgs84::e,   0.0000001);
    }
    
    BOOST_AUTO_TEST_SUITE_END()
    

    您可以将BOOST_TEST_MODULE 放入test exec monitor 的单元测试文件中。
    但是,我更喜欢把它放在一个单独的文件中,这样就可以通过简单地将新的测试文件添加到构建中来添加新的单元测试,例如test_main.cpp:

    #ifndef _MSC_VER
    #define BOOST_TEST_DYN_LINK
    #endif
    #define BOOST_TEST_MAIN
    #define BOOST_TEST_MODULE Main
    #include <boost/test/unit_test.hpp>
    

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      相关资源
      最近更新 更多