10. Tests Unitarios
Se basan en el principio de
responsabilidad única: cada
método tiene una única
responsabilidad, y esa
responsabilidad es la que
pruebo
@JuanmaGomeR
14. Tests Unitarios
No se hacen uso de
dependencias de la
clase a probar
Si no, serían test de integración
@JuanmaGomeR
15. Otros tests
● Integración: prueban la conexión entre componentes.
Debería ser el siguiente paso al test unitario.
● Funcionales: prueban la integración de todos los
componentes que desarrollan una funcionalidad.
● Regresión: prueban que los SUT siguen funcionando a lo
largo del tiempo (IC)
● Carga: prueban la eficiencia del código
@JuanmaGomeR
17. System Under Test (SUT)
● Es el sistema que vamos a probar.
● Probamos los métodos públicos:
○ Interface de nuestro SUT al mundo exterior
● ¿Los métodos privados no?
○ Relocalizar en otra parte del SUT o del sistema
○ PrivilegedAccessor
@JuanmaGomeR
18. ¿Cómo diseñar un test unitario?
Un test unitario es
independiente de los
demás y del entorno
@JuanmaGomeR
19. ¿Cómo diseñar un test unitario?
Ejecución
extremadamente
rápida
@JuanmaGomeR
20. ¿Cómo diseñar un test unitario?
Su éxito no depende
del orden de ejecución
de los demás tests
@JuanmaGomeR
21. ¿Cómo diseñar un test unitario?
Son repetibles en el
tiempo
@JuanmaGomeR
22. ¿Cómo diseñar un test unitario?
Se deben pueden
ejecutar de forma
automática
@JuanmaGomeR
26. Algunas Buenas Prácticas
package es.miempresa.programa.producto.paquete
public class MiObjeto {
package String que_eres() {
return “Soy tu objeto”;
}
}
package es.miempresa.programa.producto.tests.paquete
public class MiObjetoTests {
@Test public void si_te_pregunto_devuelves_soy_tu_objeto() {
assertEquals(“Soy tu objeto”, new MiObjeto().que_eres());
}
}
@JuanmaGomeR
27. Algunas Buenas Prácticas
Los tests están
colocados en un lugar
representativo
(mismo paquete, por ejemplo)
@JuanmaGomeR
28. Algunas Buenas Prácticas
@Test
public void test_metodo1() {
String a = “soy tu objeto”;
String b = “soy otra cadena”;
String c = null;
int num = (a==b);
if(num) {
c=b;
}
assertEquals(a, new Agenda().getCamandulo().
getB());
@JuanmaGomeR
}
30. Algunas Buenas Prácticas
Prueban el qué y no el
cómo
○ Métodos públicos --> Qué
○ Métodos privados o protegidos --> Cómo
@JuanmaGomeR
31. Algunas Buenas Prácticas
Test única
funcionalidad: No If,
while, for, ... dentro
de un test unitario
Principio de responsabilidad única
también para los tests
@JuanmaGomeR