Добавить адекватный вывод для gtest
Не могу найти информацию как добавить поддержку нормального вывода для типов, которые изначально не поддерживаются gtest
К примеру есть такой код
QList<QPair<QString, QString>> arr = {
{ eventService, "file1.exe" },
{ dummyTask, "file2.exe"},
};
for(auto &it : arr)
{
ASSERT_EQ(WindowsNS::WinApiHelper::extractProcessName(it.first), it.second);
}
Если тест провалился, то вижу на экране примерно такой вывод
TestWindApiHelper.cpp(17): error: Expected equality of these values:
WindowsNS::WinApiHelper::extractProcessName(it.first)
Which is: { 2-byte object <54-00>, 2-byte object <53-00>, 2-byte object <44-00>, 2-byte object <75-00>, 2-byte object <6D-00>, 2-byte object <6D-00>, 2-byte object <79-00>, 2-byte object <41-00>, 2-byte object <70-00>, 2-byte object <70-00>, 2-byte object <2D-00>, 2-byte object <76-00>, 2-byte object <63-00>, 2-byte object <31-00>, 2-byte object <34-00>, 2-byte object <30-00>, 2-byte object <2D-00>, 2-byte object <73-00>, 2-byte object <2E-00>, 2-byte object <65-00>, 2-byte object <78-00>, 2-byte object <65-00> }
it.second
Which is: { 2-byte object <54-00>, 2-byte object <53-00>, 2-byte object <44-00>, 2-byte object <75-00>, 2-byte object <6D-00>, 2-byte object <6D-00>, 2-byte object <79-00>, 2-byte object <41-00>, 2-byte object <70-00>, 2-byte object <70-00>, 2-byte object <2D-00>, 2-byte object <76-00>, 2-byte object <63-00>, 2-byte object <31-00>, 2-byte object <34-00>, 2-byte object <30-00>, 2-byte object <2D-00>, 2-byte object <73-00>, 2-byte object <2E-00>, 2-byte object <65-00>, 2-byte object <78-00>, 2-byte object <65-00>, 2-byte object <31-00> }
Из этого списка байтов ничего не понятно, в чем проблема. Хотелось бы видеть текстовые значения. Предполагаю что нужно определить какой-то метод, где я укажу как эти данные правильно выводить на экран. Вот только какой?
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
Это функция у вас уже реализована, иначе вы бы получили ошибку компиляции.
Gtest поддерживает два варианта, оба требуют ADL:
перегруженный operator <<
::std::ostream &
operator <<(::std::ostream& os, Object const & object);
функция PrintTo:
void
PrintTo(Object const & object, ::std::ostream * os)