Diferencia entre revisiones de «Test de Metodos y Atributos Privados»
De Dos Ideas.
(→Test de métodos privados) |
|||
Línea 30: | Línea 30: | ||
==Test de métodos privados== | ==Test de métodos privados== | ||
− | ... | + | En un ejemplo, tenemos una clase con un método privado que queremos testesar. |
+ | |||
+ | <code java> | ||
+ | public class Blah { | ||
+ | ... | ||
+ | private String unMetodoPrivado(String unParametro){ | ||
+ | ..... | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Y el test con el que se prueba el método privado. | ||
+ | |||
+ | <code java> | ||
+ | public class BlahTest { | ||
+ | ... | ||
+ | @Test | ||
+ | private void unMetodoPrivado_conUnParametro_retornaUnaSalida() { | ||
+ | //setUp | ||
+ | Blah instancia = new Blah(); | ||
+ | /*Obtenemos el método privado y lo hacemos accesible*/ | ||
+ | Method metodoPrivado = instancia.getClass().getDeclaredMethod("unMetodoPrivado", new Class[]{String.class}); | ||
+ | metodoPrivado.setAccessible(true); | ||
+ | |||
+ | //ejercitamos | ||
+ | /*ejecutamos el método privado*/ | ||
+ | String resultado = (String)metodo.invoke(instancia, new Object[]{"argumento1"})); | ||
+ | |||
+ | //verificamos | ||
+ | assertEquals("Salida Esperada", resultado); | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
==Ver también== | ==Ver también== |
Revisión del 19:15 25 ago 2010
Hay situaciones en que nos surge la necesidad de testear código con nivel de acceso privado. La solución para esto es usar Reflection. A continuación vemos un ejemplo.
Test de atributos privados
En el ejemplo, tenemos un constructor que completa atributos Collection privados:
public class Blah {
... private String unAtributoPrivado; ...
}
Y aquí el test que accede a dichos atributos:
public class BlahTest {
... @Test public void test() { Blah instancia = new Blah(); Field field = instancia.getClass().getDeclaredField("unAtributoPrivado"); field.setAccessible(true); String unAtributoPrivado = (String) field.get(instancia); ... }
}
Test de métodos privados
En un ejemplo, tenemos una clase con un método privado que queremos testesar.
public class Blah {
... private String unMetodoPrivado(String unParametro){ ..... } ...
}
Y el test con el que se prueba el método privado.
public class BlahTest {
... @Test private void unMetodoPrivado_conUnParametro_retornaUnaSalida() { //setUp Blah instancia = new Blah(); /*Obtenemos el método privado y lo hacemos accesible*/ Method metodoPrivado = instancia.getClass().getDeclaredMethod("unMetodoPrivado", new Class[]{String.class}); metodoPrivado.setAccessible(true);
//ejercitamos /*ejecutamos el método privado*/ String resultado = (String)metodo.invoke(instancia, new Object[]{"argumento1"}));
//verificamos assertEquals("Salida Esperada", resultado); } ...
}