2011-02-04 17 views
4

私はC++でDLLを開発しており、Boost Test Librariesを使用してそのDLLの単体テストを実行したいと考えています。私はBoostテストマニュアルを徹底的に読みましたが、私が新しくなったので、次の質問があります。Boost :: TestでDLLをテストしますか?

私はDLLを開発している同じVCプロジェクトにテストクラスを追加しますか?理想的にはこれをやりたいのですが、DLLにはmain()がなく、ブーストテストには自分自身でmain()を実行する必要があります。 Boostテストの出力はどこにあるのですか?

よろしく、

ジャメを(実際には、私は実質的にこれを実装しても出力されない:(ほとんどは、私はこの問題を考え出す二日間過ごしたが、成功しなかった)。

答えて

4

あなたはこれを行うための3つの方法があります:あなたは間違いなく別の回答がstaticとしてあなたのlibを提案し、構築する何ができる

  1. を。私はこの方法をお勧めしません。

  2. あなたのソリューションには、1つ以上の独立した単体テストプロジェクトを持つことができます。これらのプロジェクトはあなたのライブラリと、静的または共有バージョンのBoost Testライブラリとリンクします。各プロジェクトは、Boost.Testライブラリによって提供されるか、手動で実装されるメインを持ちます。

  3. 最後に、別のオプションがあり、テストケースを直接ライブラリに入れることができます。 Boost Testの共有バージョンにリンクする必要があります。ライブラリが構築されたら、今のように定期的に使用することができます。また、ライブラリに組み込まれているテストケースを実行することもできます。テストケースを実行するには、テストランナーが必要です。 Boost Testは、 "コンソールテストランナー"と呼ばれるものを提供します。一度ビルドする必要があり、すべてのプロジェクトに使用できます。あなたはこのようなあなたのユニットテストを実行することができ、このテストランナーを使用した:

    test_runner.exe --test「your_lib」あなたは、このアプローチのすべてのプラスとマイナスを理解しておく必要があり

    を.dllを。ユニットテストコードは、本番用ライブラリの一部になります。それはやや大きい作りますが、一方で、あなたは、必要に応じて生産にテストを実行できるようになります。私は、コンソールテストランナーBoostTest用品を見つけることができます

+2

? – StNickolay

2

あなたは最初の静的ライブラリファイルとしてDLLを構築することができますが、直接最終的なDLLをコンパイルして、ブーストのテストが含まれている実行ファイルを作成するためにそれを使用することができますここで使用してboost.build例です:。。あなたは

lib lib_base 
    : # sources 
     $(MAIN_SOURCES).cpp # Sources for the library. 
    : # requirements 
     <link>static 
    : : ; 

lib dll_final 
    : # sources 
     lib_base 
     $(DLL_SOURCES).cpp # Sources for DllMain . 
    : # requirements 
     <link>shared 
    : : ; 

unit-test test_exe 
    : # sources 
     lib_base 
     $(TEST_SOURCES).cpp # Sources for the unit tests. 
    : # properties 
     <library>/site-config//boost/test 
    ; 

どんなに重要なこともないように気をつけなければならないあなたのDllMainでギクシングしますが、それは通常a bad ideaです。

関連する問題