Я работаю над старой и большой кодовой базой C ++ и занимаюсь созданием модульных тестов для компонентов, в которых они отсутствуют.
Как правильно проверять функциональность этих классов в целях тестирования? В настоящее время я использую виртуальные функции, и в своем тестовом модуле я извлекаю фиктивный класс из базового «производственного» класса и при необходимости переопределяю функциональность.
Вот пример:
Production.cpp
class Production {
protected:
int Servers = 0;
public:
virtual bool IsValInRegistry(const std::string& regVal);
};
bool Production::IsValInRegistry(const std::string& regVal)
{
HRESULT hr = GOOD;
hr = WinSysCallToRegistry(regVal);
if (HR)
return true;
else
return false;
}
Mock.cpp
class Mock : public Production {
public:
bool IsValInRegistry(const std::string& regVal) override final;
};
Mock::IsValInRegistry(const std::string& regVal)
{
return true;
}
Это правильный путь вперед? Я обеспокоен, если я введу слишком много virtual
функций, я могу увидеть снижение производительности, которого я хотел бы избежать. Если эта virutal
модель не идеальна, то какой метод хорош?