2011-11-21 61 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