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

标签 c++ qt boost

这是一个非常基本的问题,但我没有想法。我对我的类(class)进行了示例测试:

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

最佳答案

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

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

注意:boost 库的准确名称取决于您的操作系统、编译器、多线程和 Debug模式。请参阅:how can I decode boost library naming .
Boost 库命名在 linux 上通常更简单。但是,如果您定义了相关的环境变量,那么以下 qmake 行将在 Windows 上以多线程 Debug模式与 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一个完整的例子。

关于c++ - 如何在 QT Creator 中运行 Boost 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41991982/

相关文章:

c++ - 使用 QThread 时类型转换和 QThreadStorage 警告?

c++ - 如何设置与背景图片大小相对应的窗口大小?

c++ - 为什么在单击编辑文本后不显示 qml 虚拟键盘,而我在 .pro 和 main.cpp 中调用插件

qt - 由于 poppler,无法在 Windows 上安装 pdftotext

c++ - Boost program_options 异常不替换 %canonical_option% 标签

c++ - boost::algorithm - 拆分字符串返回一个额外的标记

c++ - 在 Qt 设计器中叠加小部件

c++ - 变量在 C++ 中如何以及在哪里可能没有关联的名称?

c++ - float 距离为80位长的两倍

c++ - Boost 作用域锁定断言失败