簡體   English   中英

Boost單元測試框架:包括我的代碼庫的主要功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM