analizer
22.09.2011 06:38 mcabber
и ещё по теме вопрос. mock форсирует наличие vtbl, есть ли техники, которые позволят в релизном билде от этой vtbl избавиться? просто тянуть виртуальные вызовы в высоконагруженный класс только ради тестирования — перебор.
Макросы, макросы. Перед классом дефайнить, за классов андефайнить и молиться.
Либо по заветам сами знаете кого в мире С++ : http://en.wikipedia.org/wiki/Template_me...
не получится. класс создающий и использующий mock объект не должен делать различия при создании его, например в виде пропихивания policy. либо же тебе эту policy надо будет через весь продукт тянуть и у тебя получится header-only. я тогда не знаю сколько у меня компиляция занимать будет. скорее сдохнет от нехватки памяти процентах на десяти.
Ну это же кресты.
Да, нехватка аргументов (иногда так делаю).
okay, делаем mock с тем же интерфейсом, но без наследования и используем для тестирования шаблон функции/метода. Который на вход хавает параметр — тип, который будем тестить. Тот же Google Test отлично жует TYPED_TESTS.
опять шаблон. опять протаскивать. шаблонизированные тесты и Boost.Test умеет, но опять же — надо протаскивать шаблонный параметр в класс, который использует mock-объект. так... и эта... надо наверное наваять минимальный пример, который упрётся в оба костыля — подмену библиотечных функций и виртуальное наследование.
Значит возвращаемся к тезису /3 и думаем еще.
часов в шесть домой вернусь и подумаю
Как это ни печально, я считаю, что трюк с хэдерами самый быстрый и простой (через макросы). 5 строк где-то будет.
это действительно печально.