簡體   English   中英

Boost單元測試框架找不到主要功能

[英]Boost Unit Test framework can't find main function

我有這個最小的單元測試:

#include <boost/test/unit_test.hpp>
#define BOOST_TEST_MODULE a_test

struct Color{};

BOOST_AUTO_TEST_CASE(color_test)
{
    BOOST_CHECK(std::is_pod<Color>());
}

但是當我這樣編譯時

clang -std=c++14 -lc++ -lboost_unit_test_framework a_test.cc -o main

我得到_main的未定義符號。 -lboost_unit_test_framework使用共享庫。

我以前使用過這個庫,記得沒有必要自己聲明main函數,因為它會自動運行我定義的幾個BOOST_AUTO_TEST_CASE

我究竟做錯了什么?

動態鏈接Boost.Test時,您需要定義BOOST_TEST_DYN_LINK請參閱此處的boost文檔 )。

您可能還必須鏈接boost_test_exec_monitor

同樣,所有配置宏都需要先定義,再包括庫頭才能生效。

@ melak47也正確。 我相信以下內容也應該起作用:

#define BOOST_TEST_MODULE my_tests TestSuites // to define main()
#include <boost/test/unit_test.hpp>

struct Color{};

BOOST_AUTO_TEST_SUITE(MyColorTests)

BOOST_AUTO_TEST_CASE(color_test)
{
    BOOST_CHECK( std::is_pod<Color>() );
}

BOOST_AUTO_TEST_SUITE_END()

如果將多個這樣的模塊鏈接在一起,請確保在包含之前僅在其中一個模塊中定義了BOOST_TEST_MODULE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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