2017-08-10 521 views
3

我開始使用gtest實現一些測試。我有一些從外部請求數據的方法,需要一些時間。所以我想用線程並行執行。爲了測試,我做了一個簡單的例子:在gtest中運行線程

void TestThread(void) { 
    ASSERT_EQ(1,2); 
    boost::this_thread::sleep_for(boost::chrono::seconds(5)); 
    ASSERT_EQ(2,3); 
} 

TEST(MySuite, MyTest) { 
    boost::thread myThread(TestThread); 
    ASSERT_EQ(0,0); 
    myThread.join(); 
} 

int main(int argc, char** argv) { 
    testing::InitGoogleTest(&argc, argv); 

    return RUN_ALL_TESTS(); 
} 

我會期待TestThread的所有斷言,但第二個從不是測試結果的一部分。測試運行時間還不到一秒鐘。我想,'boost :: thread :: join'不起作用,但是爲什麼?如果斷言失敗

問候, 基督教

回答

4

ASSERT_xxx()將中止測試。 EXPECT_xxx不會。

+0

來源:https://github.com/google/googletest/blob/master/googletest/docs/Primer.md#assertions – YSC

+0

@YSC我以爲只有我知道如何找到一本使用說明手冊。 .. ;-) –

+0

(噓,不要破壞魔法) – YSC