Diferencia entre revisiones de «Test de Metodos y Atributos Privados»
De Dos Ideas.
(→Ver también) |
|||
| (No se muestra una edición intermedia del mismo usuario) | |||
| 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== | ||
| Línea 36: | Línea 70: | ||
* [http://www.junit.org Web oficial de JUnit] | * [http://www.junit.org Web oficial de JUnit] | ||
* [http://javaboutique.internet.com/tutorials/UnitTesting/ Unit testing Java programs] | * [http://javaboutique.internet.com/tutorials/UnitTesting/ Unit testing Java programs] | ||
| − | + | * [http://java.sun.com/developer/technicalArticles/ALT/Reflection/ Java Reflection] | |
[[Category:JUnit]] | [[Category:JUnit]] | ||
Revisión actual del 19:18 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);
}
...
}