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

big*_*z34 3 c++ testing crc32 unit-testing googletest

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

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.
}
Run Code Online (Sandbox Code Playgroud)

kje*_*lla 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);
}
Run Code Online (Sandbox Code Playgroud)


Neo*_*ile 5

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

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

祝好运!