如何在QT Creator中运行Boost单元测试?

时间:2017-02-01 23:47:45

标签: c++ qt boost

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

#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文件中。我的问题是:我如何只运行测试而不是整个应用程序?

1 个答案:

答案 0 :(得分:0)

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

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

注意:boost库的确切名称取决于您的操作系统,编译器,多线程和调试模式。见:how can I decode boost library naminglinux上,提升库命名通常更简单。但是,如果您定义了相关的环境变量,那么在多线程dubug模式下,以下qmake行将在Windows上与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以获取完整示例。