如何使用Google测试测试一些代码?

时间:2011-11-21 12:58:16

标签: c++ unit-testing testing googletest crc32

基本上我试图在谷歌测试中开始一些单元测试,但不知道如何去做。我已经获得了一些代码来尝试和测试,但我不知道该如何去做。这是我需要测试的一些代码?我应该从哪里开始?提前感谢您的帮助。

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.
}

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:5)

我不确定你之前是否见过 this,但肯定是试一试。我很确定你应该在这个简单的教程中得到基本的理解。另外,stackoverflow上已经提供了很多答案,我认为最好的答案是: Setup Googletest。无论如何,请仔细阅读 kjella 提供的答案,并尝试在您的代码中实现它。希望它应该按照你期望的方式工作。

注意:无论是谁试图使用Microsoft Visual Studio .Net 2003执行此类似的实现,Google Test Framework库都会自动将运行时库默认为“ 单线程调试模式的调试 '和发布模式的' 单线程 ',据我所知,更改它的选项来自代码生成不可用。因此,请确保选择单线程选项作为项目中的运行时库。除此之外,这个简单而简短的教程非常完美!

祝你好运!