【问题标题】:How to test some code using Google test?如何使用谷歌测试测试一些代码?
【发布时间】:2023-03-11 23:11:01
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

当您测试 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);
}

【讨论】:

    【解决方案2】:

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

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2015-03-27
      • 2020-09-03
      • 2012-03-30
      • 2011-06-14
      相关资源
      最近更新 更多