Как проверить код с помощью Google test?
В основном я пытаюсь запустить некоторые юнит-тесты в 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 ответа
Я не уверен, видели ли вы это раньше или нет, но обязательно попробуйте. Я вполне уверен, что вы должны получить базовое понимание в этом простом уроке. Кроме того, на stackru уже предоставлено множество ответов, и лучший, на мой взгляд, это: Настройка Googletest. Независимо от этого, просмотрите ответ, предоставленный kjella, и попытайтесь реализовать его в своем коде. Надеюсь, это должно работать так, как вы ожидаете.
Примечание. Кто бы ни пытался реализовать эту аналогичную реализацию в Microsoft Visual Studio .Net 2003, библиотеки Google Test Framework автоматически устанавливают для библиотеки времени выполнения значение "Однопоточная отладка" для режима отладки и "Однопоточная" для режима выпуска и, как Насколько я уже пробовал, возможность изменить его с генерации кода не доступна. Поэтому убедитесь, что вы выбрали однопоточную опцию в качестве библиотеки времени выполнения в вашем проекте. Помимо этого, этот простой и короткий учебник прекрасно работает!
Удачи!
Когда вы тестируете 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);
}