C++ Mock/Test boost::asio::io_stream — асинхронный обработчик на основе
-
19-09-2019 - |
Вопрос
Недавно я вернулся к C/C++ после нескольких лет работы с C#.За эти годы я осознал ценность Mocking и Unit-тестирования.
Найти ресурсы для тестов Mocks и Units на C# тривиально.WRT Издевательство, не столько с C++.
Мне хотелось бы получить некоторые рекомендации о том, что делают другие, чтобы имитировать и тестировать обработчики Asynch io_service с помощью boost.
Например, в C# я бы использовал MemoryStream для имитации IO.Stream и предполагаю, что мне следует пойти по этому пути.
- Лучшие практики C++ Mock/Test
- boost::asio::io_service Рекомендации по макетированию/тестированию
- Рекомендации по макетированию/тестированию асинхронного обработчика C++
Я начал процесс с googlemock и googletest.
Решение
Как вы, вероятно, уже заметили, в C++ гораздо меньше возможностей для создания макетов, чем в C# или Java.Лично я склонен писать свои собственные макеты по мере необходимости, а не использовать фреймворк.Поскольку большинство моих проектов, как правило, содержат большое количество интерфейсов, для меня это не особенно сложно, и я обычно создаю «фиктивную библиотеку», которая соответствует коду, который я разрабатываю.Пример того, как я это делаю, можно найти здесь в моих статьях «Практическое тестирование».В конце концов, это не так уж и отличается от макетирования и тестирования на C#, применяются все те же принципы, просто в конечном итоге вам придется выполнять большую часть тяжелой работы самостоятельно.