Как выполнить модульное тестирование на закрытых членах (и методах) классов 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

Ответы на вопрос(8)

Ваш ответ на вопрос