Как проверить код с помощью Google test? - PullRequest
3 голосов
/ 21 ноября 2011

В основном я пытаюсь запустить некоторые юнит-тесты в google test, но не знаю, как это сделать. Мне дали код, чтобы попробовать и протестировать, но я понятия не имею, как это сделать. Это какой-то код, который мне нужно проверить? С чего мне начать? Заранее спасибо за любую помощь.

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 ]

6 голосов
/ 22 ноября 2011

Когда вы тестируете 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);
}
5 голосов
/ 22 ноября 2011

Я не уверен, видели ли вы это раньше или нет, но обязательно попробуйте.Я вполне уверен, что вы должны получить базовое понимание в этом простом уроке.Кроме того, на stackoverflow уже предоставлено множество ответов, и лучший, на мой взгляд, это: Настройка Googletest .В любом случае, пройдите ответ, предоставленный kjella , и попытайтесь реализовать его в своем коде.Надеемся, что это должно работать так, как вы ожидаете.

Примечание: Кто бы ни пытался реализовать эту аналогичную реализацию с Microsoft Visual Studio .Net 2003, библиотеки Google Test Framework автоматически по умолчаниюБиблиотека времени выполнения для ' Однопоточная отладка ' для режима отладки и ' Однопоточная ' для режима выпуска и доЯ пробовал, вариант для его изменения из генерации кода не доступен.Поэтому убедитесь, что вы выбрали однопоточную опцию в качестве библиотеки времени выполнения в вашем проекте.Помимо этого, этот простой и короткий учебник прекрасно работает!

Удачи!

...