Как протестировать код с помощью теста Google?

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

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

person bigbaz34    schedule 21.11.2011    source источник
comment
Вы читали code.google.com/p/googletest/wiki/Primer? ?   -  person PlasmaHH    schedule 21.11.2011
comment
Да, действительно есть, но до сих пор не понимаю, как начать создавать собственный тест.   -  person bigbaz34    schedule 21.11.2011


Ответы (2)


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

Примечание. Кто бы ни пытался выполнить аналогичную реализацию с помощью Microsoft Visual Studio .Net 2003, библиотеки Google Test Framework автоматически устанавливают для библиотеки времени выполнения значение "Однопоточная отладка по умолчанию. em>» для режима отладки и «Однопоточный» для режима выпуска, и, насколько я пробовал, возможность изменить его из кода Генерация недоступна. Поэтому убедитесь, что вы выбрали однопоточный вариант в качестве библиотеки времени выполнения в своем проекте. Кроме того, этот простой и короткий учебник работает идеально!

Удачи!

person Neophile    schedule 22.11.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);
}
person kjella    schedule 22.11.2011