Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在所有测试用例之后运行函数BOOST c++;_C++_Unit Testing_Boost - Fatal编程技术网

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

C++ 如何在所有测试用例之后运行函数BOOST c++;,c++,unit-testing,boost,C++,Unit Testing,Boost,我有一个问题,我在思考;如果C++中的Boost库中有任何宏,那么在 > >强>测试用例之后,它将运行一次函数。我想运行一个函数,它将创建一个JSON文件,没有执行的测试的次数、通过的测试号和所有测试的数量。所以我有这个问题,因为我必须处理以特定方式构建的文件: f1() f2() f3() 增压自动测试案例(f1){} 增压自动测试用例(f2){} 增压自动测试用例(f3){} 因此,我无法创建main()函数,因为我收到一个错误,即在/boost/test/unit_test.hpp中有以前

我有一个问题,我在思考;如果C++中的Boost库中有任何宏,那么在<强> > >强>测试用例之后,它将运行一次函数。我想运行一个函数,它将创建一个JSON文件,没有执行的测试的次数、通过的测试号和所有测试的数量。所以我有这个问题,因为我必须处理以特定方式构建的文件:

f1()
f2()
f3()
增压自动测试案例(f1){}
增压自动测试用例(f2){}
增压自动测试用例(f3){}
因此,我无法创建main()函数,因为我收到一个错误,即在/boost/test/unit_test.hpp中有以前的声明


先谢谢你。问候。

解决此问题至少有两种可能的方法

第一种方法是使用,或者更具体地说是使用

#定义BOOST_测试_模块示例
#包括
结构夹具{
Fixture(){/*启动时运行*/}
~Fixture(){/*在拆卸时运行*/}
};
助推器(全球)固定装置(固定装置);
增压自动测试用例(测试用例)
// ... 等等

另一个选项是使用库中为提供的功能,以便您可以在尝试时使用自己的
main()

OT:这可能与主题无关,因为问题明确提到了BOOST库

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

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


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

您正在寻找——可能是一个,或者,如果您想实际创建一个
main()
,有一种方法可以@DanMašek,谢谢!我测试过了,这就是我想要的!好的,我会写下来作为回答。
#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