提升单元测试框架:包括我的代码库的主要功能
Boost unit test framework: include main function of my codebase
我有一个代码库,我想在上面进行测试。除了程序的主要功能外,此代码库的一个文件还包含我要测试的代码。
当我将此文件添加到我的 CMakeList 时,它抱怨包含多个主要函数。
事情是这样的:
运行测试.cpp:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE Main
#include <boost/test/unit_test.hpp>
我的测试1.cpp:
#define BOOST_TEST_MODULE test_1_module
#define BOOST_TEST_DYNAMIC_LINK
#include <boost/test/unit_test.hpp>
#include <boost/test/parameterized_test.hpp>
#include <boost/test/unit_test_log.hpp>
#include <boost/test/results_collector.hpp>
#include "../MyCode.h"
BOOST_AUTO_TEST_SUITE(test_suite_one)
BOOST_AUTO_TEST_CASE {
...
}
BOOST_AUTO_TEST_SUITE_END()
以下是我的CMakeLists的样子:
SET (
TestRunner
RunTest.cpp
MyCode.cpp #contains a main function
)
ADD_EXECUTABLE(TestRunner $TestRunner)
我该如何解决这个问题?有没有办法要求 boost 忽略我的代码库中的主函数?
为了避免测试exe中多个main
函数的错误,我将项目分成两个项目。CMake 代码:
add_library (MyProject_base STATIC ${MYPROJECT_BASE_SRC})
add_executable (MyProject ${MYPROJECT_SRC})
add_executable (MyProject_Test ${MYPROJECT_TEST_SRC})
target_link_libraries(MyProject_base
#stuff
)
target_link_libraries(MyProject
MyProject_base
#stuff
)
target_link_libraries (MyProject_Test
MyProject_base
#stuff
)
现在MyProject_base
构建为静态库,链接到实际的可执行MyProject
以及测试exe MyProject_Test
。然后MyProject_base
中的代码是单元测试的,而MyProject
只不过是一个 main 函数,当然没有经过单元测试。
相关文章:
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 如何使用 GDB 从功能C++逐步调试到 std::function 用户代码?
- 在大括号内添加语句会更改代码功能?
- c++ Visual Studio 2015 快捷方式,用于从选择代码中生成功能
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- 如何避免大多数成员功能相同的代码重复
- 如何简化代码并将开关组合成一个功能?
- 维护/维持两个代码集的风险,一个用于 CPU,一个用于 GPU,需要执行非常相似的功能
- 所以我想出了他的代码,但我不确定如何继续删除功能?
- 为什么GCC违反了调用ABS功能的代码,并用简短的参数进行功能
- 如何构建包含CUDA功能和C 模板功能的代码
- 是否有一种方法可以避免在RVALUE和LVALUE参考中创建功能时避免重复的代码
- C //尝试重写一个工作代码以包括我的功能
- 代码仅在2个功能实现中的1个中溢出
- 如何在现有 c++ 代码中以功能方式实现遥测
- 在C/C 中使用检查功能的Windows NT命令行代码循环
- C Linux代码破坏Windows构建,因为缺少标头意味着功能不确定
- 代码由编译器代替,用于成员功能的功能指针
- 此代码中没有匹配功能
- 对功能代码块的未定义引用