2017-02-01 9 views
0

私はBoost単体テストをたくさん持っています。私はシグナルハンドラを置く場所を見つけることができません。ユニットテストディレクトリのファイルには、main()の機能はありません。一部のマクロではmain()が隠れているようです。 unit_test.hppブーストユニットテスト用のシグナルハンドラをインストールすることはできますか?

は、私が参照してください。

namespace boost { namespace unit_test { 

int BOOST_TEST_DECL unit_test_main(init_unit_test_func init_func, int argc, char* argv[]); 

} 

しかし、どのように私はそこにシグナルハンドラを設定できるように、私自身のmain()機能を実装することができますか?

+1

あなたは、main関数の生成を無効にして、独自のものを提供することができます。例は[こちら]です(http://www.boost.org/doc/libs/1_63_0/libs/test/doc/html/boost_test/utf_reference/link_references/link_boost_test_no_main.html) – mkaes

+0

答えをありがとう! – JimmyY

答えて

0

指示hereごとに、あなたがシグナルハンドラを設定するために、独自のmain機能を提供することができ、ここで、このために採用したいくつかのコードは次のとおりです。

#define BOOST_TEST_MODULE custom_main 
#define BOOST_TEST_NO_MAIN 
#define BOOST_TEST_ALTERNATIVE_INIT_API 
#include <boost/test/included/unit_test.hpp> 
#include <iostream> 

#include <unistd.h> 
#include <signal.h> 

void signalHandler(int sig) 
{ 
    std::cerr << "Inside signal handler" << std::endl; 
} 

namespace utf = boost::unit_test; 

BOOST_AUTO_TEST_CASE(test1) 
{ 
    BOOST_TEST(false); 
} 

int main(int argc, char* argv[], char* envp[]) 
{ 
    signal(SIGINT, signalHandler); 
    signal(SIGTERM, signalHandler); 
    return utf::unit_test_main(init_unit_test, argc, argv); 
} 
+0

ありがとうございました! – JimmyY

+0

あなたはユニットテストを実行するすべてのテストの出力名を強制的に昇格する方法を知っているかもしれませんか? Google unittestにはオプション-vがあります。しかし、それは単体テストを高めるためには機能しません。どうも。 – JimmyY

+0

コマンドラインスイッチ '--log-level = all'を試すことができます – Smeeheey

関連する問題