【问题标题】:How to run a Boost Unit Test in QT Creator?如何在 QT Creator 中运行 Boost 单元测试?
【发布时间】:2017-02-01 23:47:44
【问题描述】:

这是一个非常基本的问题,但我没有想法。我有我班级的示例测试:

#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE( my_test ){
       Hero TestHero ("Hika",100,100,100,100,100,100,100,0,100);         
       BOOST_CHECK ( TestHero.getHP() == 100 ); }

这些都存储在我的 tests.cpp 文件中。我的问题是:如何只运行测试而不是整个应用程序?

【问题讨论】:

    标签: c++ qt boost


    【解决方案1】:

    单元测试通常在您的应用程序的独立可执行文件中运行。

    要运行boost 单元测试库,测试可执行文件必须链接到boost_test_exec_monitor

    注意:boost 库的确切名称取决于您的操作系统、编译器、多线程和调试模式。请参阅:how can I decode boost library naming.
    linux 上的 Boost 库命名通常更简单。但是,如果您定义了相关的环境变量,那么以下 qmake 行将在 Windows 上以多线程 dubug 模式与 MinGW 链接:

    BOOST_LIB_SUFFIX = $${MINGW_VERSION}-mt-gd$${BOOST_VERSION}
    
    INCLUDEPATH += $$BOOST_ROOT
    LIBS += -L$${BOOST_ROOT}/stage/lib
    LIBS += libboost_test_exec_monitor$${BOOST_LIB_SUFFIX}
    

    您可以将所有单元测试放在一个文件中,但最好将以下内容放在名为 test_main.cpp 的文件中(例如)并将其添加到 qmake 文件中的源文件中。

    #define BOOST_TEST_MODULE Main
    #include <boost/test/unit_test.hpp>
    

    然后可以编写单独的单元测试文件并将其添加到单元测试qmake文件中,例如:

    #include "Hero.hpp"
    #include <boost/test/unit_test.hpp>
    
    BOOST_AUTO_TEST_SUITE(MyTests)
    
    BOOST_AUTO_TEST_CASE( my_test ){
           Hero TestHero ("Hika",100,100,100,100,100,100,100,0,100);         
           BOOST_CHECK_EQUAL (100, TestHero.getHP()); }
    
    BOOST_AUTO_TEST_SUITE_END()
    

    您的单元测试qmake 文件应包含测试文件以及应用程序中的相关源文件,例如:

    SOURCES += tests/test_main.cpp \
       tests/my_test.cpp \
       src/Hero.cpp
    

    tests 目录中查看完整示例:via-httplib

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多