2011-11-21 64 views
3

基本上我試圖在谷歌測試中啓動一些單元測試,但不知道如何去做。我已經給了一些代碼來嘗試和測試,但我不知道如何去做這件事。這是我需要測試的一些代碼?我應該從哪裏開始?預先感謝您的幫助。如何使用Google測試測試一些代碼?

void CCRC32::FullCRC(const unsigned char *sData, unsigned long ulDataLength, unsigned long *ulOutCRC) 
{ 
    *(unsigned long *)ulOutCRC = 0xffffffff; //Initilaize the CRC. 
    this->PartialCRC(ulOutCRC, sData, ulDataLength); 
    *(unsigned long *)ulOutCRC ^= 0xffffffff; //Finalize the CRC. 
} 
+1

您是否閱讀過http://code.google.com/p/googletest/wiki/Primer? – PlasmaHH

+0

確實如此,但仍不明白如何開始創建自己的測試。 – bigbaz34

回答

5

我不知道,如果你以前還是沒有看到 this,但肯定給它一個去。我很肯定你應該瞭解這個簡單教程中的基本理解。此外,在stackoverflow上已經提供了很多答案,我認爲最好的答案是: Setup Googletest。無論如何,請仔細閱讀kjella提供的答案,並嘗試在您的代碼中實現它。希望它能以你期望的方式工作。

注:誰試圖進行這種類似的實現與Microsoft Visual Studio .NET 2003中,谷歌測試框架庫自動默認運行時庫「單線程調試」的調試模式'單線程'用於發佈模式,並且據我所測試,從代碼生成中更改它的選項不可用。所以,請確保在項目中選擇單線程選項作爲運行時庫。除此之外,這個簡單而短的教程是完美的!

祝你好運!

6

當您正在測試的CRC32 :: FullCRC你應該有一個輸入字符串,給出一個已知的CRC,所以你可以驗證對已知值的結果。 另外,您應該使用小於或高於字符串大小的輸入長度進行測試,以驗證輸入不正確時方法的行爲。 您也可以嘗試給出空指針而不是字符串來測試該方法不會使應用程序崩潰。

在VC++中的測試看起來是這樣的:

TEST(CRC32, FullCRC) 
{ 
    //Assuming this is correct CRC (example) 
    unsigned long nCorrectCRC = 0xAA55BB77; 
    //A string to build crc for 
    CString sValue("What is the CRC32 for this string"); 
    //Pointer to string buffer 
    LPCSTR pBuf = sValue.GetBuffer(0); 
    //Length of string 
    unsigned long nLength = sValue.GetLength(); 
    //Calculated crc 
    unsigned long nCalculatedCRC = 0; 
    //Get the CRC 
    CRC32 MyCRC; 
    MyCRC .FullCRC(pBuf,nLength,nCalculatedCRC); 
    //Do the test, GooglTest returns "Passed" or "Failed" 
    ASSERT_TRUE(nCalculatedCRC == nCorrectCRC); 
} 
+0

'nCRC'從哪裏來? – Neophile

+0

對不起,現在修復 – kjella