我是单元测试的新手,而不是C++的新手.最近我在使用RSpec的Ruby中进行了测试驱动开发的一些经验.现在我正在尝试使用Boost的单元测试框架在C++中进行类似的工作.
我正在/src项目的根文件夹下的目录中组织应用程序的头文件和源文件.正如我在其他C++程序中多次看到的那样/tests,在项目的根目录中的目录中进行测试似乎是合理的.
现在我想在测试中复制源文件的目录结构.因此,假设我有以下源/头文件结构:
/src
/controller
controller_class.h
controller_class.cpp
/model
model_a.h
model_a.cpp
model_b.h
model_b.cpp
/view
simple_view.h
simple_view.cpp
Run Code Online (Sandbox Code Playgroud)
因此,测试组织如下
/tests
TestRunner.cpp
/controller
controller_class_test.cpp
/model
model_a_test.cpp
model_b_test.cpp
/view
simple_view_test.cpp
Run Code Online (Sandbox Code Playgroud)
对于TestRunner.cpp我从这篇博文中的例子:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "MyProgram Unit Tests"
#include <boost/test/unit_test.hpp>
Run Code Online (Sandbox Code Playgroud)
我现在想继续TestRunner.cpp创建基本测试套件(用于控制器,模型和视图),如下所示
BOOST_AUTO_TEST_SUITE ( controller )
//some stuff here
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE ( model )
//some stuff here
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE ( view )
//some stuff here
BOOST_AUTO_TEST_SUITE_END()
Run Code Online (Sandbox Code Playgroud)
但是,我现在如何将更多嵌套测试套件和案例集成到这些顶级测试套件中?我终于希望实际的测试用例只出现在*_test.cpp文件中.虽然每个文件都将测试用例包装到一个额外的测试套件中:
TestRunner.cpp) …