[英]Boost unit test framework: include main function of my codebase
我有一個要在其上執行測試的代碼庫。 除了程序的主要功能之外,此代碼庫的文件之一還包含我要測試的代碼。
當我將此文件添加到CMakeLists時,它抱怨包含多個主要功能。
外觀如下:
RunTest.cpp:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE Main
#include <boost/test/unit_test.hpp>
MyTest1.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()
這是我的CMakeList的樣子:
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
只是一個主要功能,即不對單元進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.