2013-07-11 60 views
0

最初發佈於googletestframework論壇。如何使用Google測試框架測試共享庫

我剛開始與谷歌C++測試框架播放,並已通過樣品的工作。我正在使用Linux,Eclipse和Linux GCC工具鏈。我還在Eclipse中安裝了C/C++單元測試插件。

我有一個共享庫項目,我試圖編寫測試,但遇到了一個我無法弄清楚的問題。爲了測試我的共享庫項目,我已經構建了一個單獨的可執行項目,並將測試放在此項目中。

我已經添加了必要的包含路徑和庫,以便構建所有東西,但是當我嘗試從我的可執行項目運行測試時,該測試輸出沒有向我顯示任何有意義的東西。這是一個例子。

這是我的測試類,在可執行項目(ChallengeResponsePacket是我的共享庫項目中的一個類)中名爲ChallengeResponsePacketTest.cpp的文件。

TEST(ChallengeResponsePacketTest, shouldSerializePacket) { 
    const unsigned char SALT[] = {0x01, 0x02, 0x03}; 
    const char username[] = "daver"; 
    unsigned char buffer[100]; 

    ChallengeResponsePacket packet; 
    packet.setSaltValue(SALT, sizeof(SALT)); 
    packet.setCompressionType(0); 
    packet.setEncryptionType(0); 
    packet.setUsername(username); 
    int size = packet.serialize(buffer, sizeof(buffer)); 

    EXPECT_EQ(12, size); 
    EXPECT_EQ(5, buffer[0]); 
} 

這是我得到的輸出:

[----------] 1 test from ChallengeResponsePacketTest 
[ RUN  ] ChallengeResponsePacketTest.shouldSerializePacket 
gtest_test: ../src/ChallengeResponsePacket.cpp:34: virtual int tnp::ChallengeResponsePacket::serialize(unsigned char*, size_t) const: Assertion `_clientHashLength > 0' failed. 
Aborted 

正如你可以想像,在C/C++單元測試插件已經不知道該怎麼做這個。

是否有某種原因,我沒有得到通常相當谷歌測試框架的輸出?

我想另外一個問題我已經是,如果這是使用測試框架來測試共享庫代碼的最佳方式?

感謝,

+0

它看起來像我圖書館拋出異常? 「Assertion'_clientHashLength> 0'失敗。」部分行可能是異常消息?我不使用谷歌測試,所以我不確定當一個意外的異常被拋出時它的消息是什麼樣的。 –

回答

1

感謝佈雷,

那我指出了正確的方向。原來代碼中有些東西被拋出(或者簡單的失敗)。我不能肯定地說這是因爲我重寫了代碼,問題就消失了。我有一個類似的問題,插件失敗,沒有錯誤,但在命令行上運行測試導致seg故障錯誤消息。

我一直在做Java的很長一段時間,剛剛回來的C++。我想我習慣了更寬容的工具。

乾杯,戴夫 。