如何在所有测试用例 BOOST c++ 之后运行函数



我有一个问题,我正在思考;如果BOOST库中有任何宏C++功能,它将在所有测试用例之后运行一次函数。

我想运行一个函数,该函数将使用 no 创建一个 json 文件。执行的测试,没有。通过的测试,没有。所有测试。所以我有这个问题,因为我必须使用以特定方式构建的文件:

F1()
F2()
f3()
BOOST_AUTO_TEST_CASE(f1){}
BOOST_AUTO_TEST_CASE(f2){}
BOOST_AUTO_TEST_CASE(f3){}

所以我无法创建可以为我做到这一点的 main() 函数,因为我收到一个错误,指出/boost/test/unit_test.hpp 中有一个先前的声明。

提前谢谢你。问候。

这个问题至少有两种可能的方法。

第一种是使用夹具,或者更具体地说是全局夹具。

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
struct Fixture {
  Fixture()   { /* Run on startup */ }
  ~Fixture()  { /* Run on tear down */ }
};
BOOST_GLOBAL_FIXTURE(Fixture);
BOOST_AUTO_TEST_CASE(test_case)
// ... and so on

另一种选择是使用库中提供的功能来覆盖入口点,以便您可以在尝试时使用自己的main()

OT:这可能是题外话,因为问题明确提到了 BOOST 库。

我个人的经验是,C++的单元测试框架实际上更适合C++语言(利用C++语言本身;不要盲目复制旧的单元测试框架设计),更容易配置(只需复制一个具有完整实现的文件;没有外部依赖),并且更易于使用。

看看 Catch 单元测试框架。它还很好地支持测试驱动开发和行为驱动开发。

(例如,nanodbc 项目最近在经过一些评估后从 BOOST 切换到 Catch。现有的测试几乎可以机械地重写 - 通过编辑器工具替换。

相关内容

最新更新