Me pregunto cómo debería probar este tipo de funcionalidad a través de NUnit.Cómo probar el código de la unidad que es altamente complejo detrás de la interfaz pública
Public void HighlyComplexCalculationOnAListOfHairyObjects()
{
// calls 19 private methods totalling ~1000 lines code + comments + whitespace
}
De la lectura veo que NUnit no está diseñado para poner a prueba los métodos privados por razones filosóficas sobre lo que la unidad de pruebas debe ser; pero sería casi imposible tratar de crear un conjunto de datos de prueba que ejecutaran por completo toda la funcionalidad involucrada en el cálculo. Mientras tanto, el cálculo se divide en una serie de métodos más pequeños que son razonablemente discretos. Sin embargo, no son cosas que tengan un sentido lógico para hacerse de forma independiente el uno del otro, por lo que están configuradas como privadas.
Como otros han señalado: Si una clase es tan difícil de probar, a menudo es un signo de que la clase está tratando de hacer demasiado. Si el cálculo se puede dividir en métodos más pequeños, ¿es posible desglosarlo en etapas separadas, con cada etapa representada por su propia clase/interfaz? O bien, si el cálculo consiste principalmente en un grupo de fórmulas complejas, podría tener una clase especializada de "matemáticas" con un montón de métodos estáticos que implementen cada fórmula. – Aaronaught
No sin un grado de reelaboración que está fuera del alcance/presupuesto/tiempo actual. –
Dan - ¿qué terminaste haciendo? Estamos teniendo los mismos problemas. – Andrew