Недавно я обнаружил gmock, и теперь я продолжаю "переосмысливать весь процесс программирования как есть", добавляя модульные тесты, где только можно. Одна вещь, которая показалась мне странной в этом процессе, заключается в том, что модуль QSql явно является внешней зависимостью от нашего кода, не дает разработчикам инструментов издеваться над его внутренними компонентами. Самое лучшее, что я могу придумать с помощью этого модуля, - это DB в памяти, который намного сложнее реализовать, чем простой макет и даже не всегда возможен (подумайте о подделке пакетов Oracle с внутренней памятью)
Теперь для меня это не совсем проблема. Некоторое время назад мы перешли на домашнюю оболочку ocilib, которая наследуется от виртуального интерфейса (и, таким образом, легко макетируется). Но на самом деле, разве нет способа издеваться над вами, когда вы используете Qt-модуль Qt? Вернее - Qt является (действительно хорошей) структурой, действительно ли они не обеспечивают автоматизацию для таких случаев использования или я что-то не хватает?
UPD1: Небольшое обновление важности вопроса:
Мой код ОЧЕНЬ сильно чередуется с запросами Oracle SQL, как, наверняка, кода многих других людей. Единичное тестирование такого кода практически невозможно, когда внешняя зависимость, которая также сильно развивается, иногда поставляет неверные данные. Когда ваш unit test ломается, вы хотите, чтобы это был ваш код, который виноват, а не Oracle. Вот почему я задал оригинальный вопрос. Если существует/существует способ полупросто издеваться над зависимостью с использованием интерфейса qsqlquery, тогда становится возможным выполнение модульных тестов для кода с использованием QSql.
UPD2: Хотя, после дальнейшего рассмотрения, я должен признать, что проблему можно было бы избежать при улучшении дизайна кода (вместо OO вместо свободных функций в некоторых местах) и лучшего разделения объектов. Таким образом, практически невозможно в UPD1 не было действительно оправдано. Хотя это действительно не делает вопрос оригинальным менее важным. Когда вам поручено поддерживать устаревший код, например, насмешка QtSql является единственным реалистичным способом введения тестов в систему.