3

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

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

2 回答 2

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);
}
于 2011-11-22T12:54:31.377 回答
5

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

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

祝你好运!

于 2011-11-22T16:55:54.793 回答