2012-03-19 2 views
0

私は、Google TestでASSERTの失敗に直面してTearDown()を行う方法を理解しようとしています。Google Testでは、アサーションの失敗に直面してどのように解体するのですか?

ダミー例は以下の通りです:私はacheiveしようとしている何

class TestFixture: public testing::Test 
{ 
protected: 
    virtual void SetUp() 
    { 
     // Do per test setup 
    } 

    virtual void TearDown() 
    { 
     // Do per test teardown 
    } 

} 

TEST_F(TestFixture, MyTest) 
{ 
    ASSERT_TRUE(false); 
} 

テストがアサーションの失敗をスローした場合でも呼び出される)(ティアダウンのためです。アサーションがスローされたとき、GoogleTestはTearDown()を呼び出しません。これについてどうすればいいですか?

+1

ライブラリがそのように動作していますか?今のところ[(r609) 'Test :: Run'](http://code.google.com/p/googletest/source/browse/trunk/src/gtest.cc#2153)は常に' TearDown'を呼び出します。 TestBodyに致命的な失敗があったとしても。 –

+0

あなたは正しいです!テストが単独でスレッド化されている場合、TearDownは致命的な失敗に関係なく呼び出されます。なぜなら私のテストはマルチスレッドであるからです。この場合、TearDown()は呼び出されません。テストボディがアサーションをスローします: – vinodkone

答えて

2

フィクスチャのコンストラクタに設定コードを入れ、デストラクタに分解コードを入れます。

関連する問題