Cómo hacer pruebas unitarias en miembros privados (y métodos) de clases C ++ [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo pruebo una función privada o una clase que tiene métodos privados, campos o clases internas? 47 respuestas

Soy muy nuevo en las pruebas unitarias y estoy un poco confundido.

Estoy tratando de hacer pruebas unitarias (usando el marco de pruebas unitarias Boost) en una clase de C ++ llamadaVariableImpl. Aquí están los detalles

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
  }
};

Mi pregunta es, ¿cómo puedo verificar que la media se calcule correctamente? Tenga en cuenta que 1)m_mean está protegido y 2)UpdateStatistics llama a un método de otra clase y luego borra el vector.

La única forma en que puedo ver sería agregar un captador (por ejemplo,GetMean), pero no me gusta esta solución, ni creo que sea la más elegante.

¿Cómo debería hacer

¿Y qué debo hacer si tuviera que probar un método privado en lugar de una variable privada?

TIA,

Jir

Respuestas a la pregunta(8)

Su respuesta a la pregunta