Hace 2 semanas escribí un post, sobre como testear métodos privados, no me percaté que con esta forma solo se podían escribir test unitarios para métodos de instancia, para los métodos estáticos privados se utiliza otra modalidad.

Supongamos que por alguna razón usted necesita métodos estáticos (que según yo, junto con la sentencia if, son el diablo, un cáncer que hay que aprender a vivir con el, pero intentar erradicarlo) y que por una razón aún más oscura se deben testear (como acotó Erwin en el post anterior, se debe testear comportamiento y no implementación), esto no debería suceder, pero supongamos.

Modifiquemos la clase matemática que teníamos antes para hacer la maldad de dejarla estática 😥 … debo insistir…

Con esto se debe crear otro método de prueba para esta clase, esto quedaría de la forma

Como se ve, se crea un objeto para envolver la clase Matemática que es estática, este objeto es de tipo PrivateType, con este objeto creado y a través de ese objeto, se puede acceder al método InvokeStatic, entregando como parámetro el nombre del método estático privado que se quiere testear y hacia al lado los parámetros de entrada de dicho método estático, como resultado entrega un objeto de tipo object, que como la vez anterior debía ser convertido al tipo del resultado que entrega el método para hacer el assert.

Eso, se los dejo, espero sinceramente que nunca lo usen, pero si no hay de otra, acá como se hace.