Etiquetas

, ,

Hoy en día nadie ponen en duda la utilidad de las pruebas unitarias, y de la importancia del incremento de la cobertura de código.

Atrás quedaron los días en los que la gente tildaba de perdida de tiempo la creación de pruebas automáticas e incluso se atrevían a criticar su utilización así como las metodologías agiles que se con fundamento en estas pruebas.

 

Hoy mas que ponernos nostálgicos quería resaltar la importancia de las pruebas automáticas y dar una herramienta más que nos permita aumentar nuestra cobertura de código sin tener que violar el encapsulamiento y otras propiedades de la Programación Orientada a Objetos.

Para empezar mostramos el caso de prueba de un método interno, el cual queremos probar ya que es la base de una funcionalidad.

Para ello debemos encapsular el objeto dentro de otro e invocar sus métodos privados a través de un invocador.

PrivateObject accessor = new PrivateObject(instantObject); 

var lst = accessor.Invoke(“PrepareData”,param1); 

 

Como se muestra en el ejemplo con la clase PrivateObject encapsulamos la instancia de nuestra clase y luego ejecutamos el método PrepareData con el parametro1. Su resultado es el resultado que obtendríamos si la ejecutásemos directamente si su visibilidad fuese pública.

 

Hasta aquí el post sobre invocación de métodos privados para pruebas unitarias. Espero que sea de utilidad y dejamos para otro post la independización de codigo basado en Microsoft.Fakes.

Anuncios