Как выполнить модульное тестирование на закрытых членах (и методах) классов C ++ [duplicate]
На этот вопрос уже есть ответ:
Как мне проверить приватную функцию или класс, у которого есть приватные методы, поля или внутренние классы? 47 ответовЯ очень плохо знаком с юнит-тестированием и немного растерялся.
Я пытаюсь выполнить модульное тестирование (используя среду модульного тестирования Boost) в классе C ++ с именемVariableImpl
. Вот подробности.
class Variable
{
public:
void UpdateStatistics (void) {
// compute mean based on m_val and update m_mean;
OtherClass::SendData (m_mean);
m_val.clear ();
}
virtual void RecordData (double) = 0;
protected:
std::vector<double> m_val;
private:
double m_mean;
};
class VariableImpl : public Variable
{
public:
virtual void RecordData (double d) {
// put data in m_val
}
};
Мой вопрос: как я могу проверить, что среднее значение вычислено правильно? Обратите внимание, что 1)m_mean
защищен и 2)UpdateStatistics
вызывает метод другого класса, а затем очищает вектор.
Единственный способ, которым я могу видеть, - это добавить геттер (например,GetMean
), но мне это решение совсем не нравится, и я не считаю его самым элегантным.
Как мне быть?
А что мне делать, если я должен был протестировать закрытый метод вместо закрытой переменной?
ТИА,
Jir