12

ユニットテストにBoost.Testを使用しています。

いくつかの理由から、ユニットテストケースをさまざまな静的ライブラリに記述したいと思います。

問題は、これを行うと、自動レジストラが機能しないことです。

たとえば、次のようなものがある場合:

// foo_tests.cpp
#define BOOST_TEST_MODULE "Foo"
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE( Bar )
{
    BOOST_CHECK( false );
}
// used to generate libFooTests.a

// main.cpp
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
// used to generate main.o

次に、main.oをlibFooTests.aにリンクして、最終的なバイナリを実行すると、次のようになります。

Test setup error: test tree is empty

ソースコードから直接バイナリを作成すればすべて問題なく動作しますが、自動登録を使用して静的ライブラリ内に単体テストを記述できなくなります。

これを達成できますか?

定義する必要のあるマクロはありますか?libFooTests.aからエクスポートする必要のあるシンボルはありますか?

ありがとう!

4

1 に答える 1

2

ライブラリに「未使用」のオブジェクト定義を強制的に含める方法

それはあなたと同じ問題であり、あなたは私が私の答えでしたのと同様の解決策を導き出さなければならないでしょう。

于 2011-02-02T18:50:39.700 に答える