Assertions con Truth
Clase 4 de 16 • Curso de Android Testing
Resumen
La programación de pruebas es un componente esencial en el desarrollo de software de calidad. Entender cómo estructurar y ejecutar tests efectivos puede marcar la diferencia entre una aplicación robusta y una propensa a errores. En esta ocasión, exploraremos cómo implementar pruebas utilizando el framework Truth, enfocándonos en un caso práctico con una calculadora de experiencia basada en ubicaciones.
¿Cómo se estructuran los tests en programación?
Los tests en programación siguen una estructura bien definida que facilita su comprensión y mantenimiento. Esta estructura se divide en tres componentes fundamentales:
- Condiciones: Establecen el escenario o estado inicial necesario para la prueba.
- Acciones: Representan las operaciones que se ejecutarán sobre el sistema bajo prueba.
- Resultados: Son las verificaciones que confirman si el comportamiento del sistema es el esperado.
Para verificar estos resultados, existen diversos frameworks o SDKs como Unit, Truth o Assertk. En nuestro caso, utilizaremos Truth debido a su legibilidad y facilidad de uso, características que lo hacen ideal para desarrolladores que buscan escribir pruebas claras y mantenibles.
¿Qué es una calculadora de experiencia y cómo funciona?
Antes de sumergirnos en la implementación de pruebas, es importante entender el componente que vamos a testear. La calculadora de experiencia es una clase que calcula puntos de experiencia basados en la ubicación del usuario. El sistema de puntuación funciona de la siguiente manera:
- Lugares turísticos: 5 puntos
- Áreas culturales: 4 puntos
- Parques o puntos naturales: 3 puntos
- Vecindarios o lugares locales: 2 puntos
- Cualquier otro lugar: 1 punto
La función principal de esta clase es calculate experience
, que recibe una lista de lugares y devuelve la suma de los puntos correspondientes a cada ubicación. Para determinar la categoría de cada lugar, se utiliza la función place score
, que evalúa las coordenadas del lugar y las compara con rangos predefinidos para cada categoría.
¿Cómo se determina la categoría de un lugar?
El proceso de categorización se basa en las coordenadas geográficas del lugar:
- Si las coordenadas caen dentro del rango definido para lugares turísticos, se asignan 5 puntos.
- Si caen dentro del rango de áreas culturales, se asignan 4 puntos.
- Para parques o áreas naturales, 3 puntos.
- Para vecindarios o lugares locales, 2 puntos.
- Para cualquier otra ubicación, 1 punto.
Esta lógica de categorización es crucial para el funcionamiento correcto de la calculadora de experiencia, y será el foco principal de nuestras pruebas.
¿Cómo implementar un test sanitario para la calculadora de experiencia?
Para comenzar a implementar nuestro primer test sanitario para la calculadora de experiencia, debemos seguir un enfoque metódico. Un test sanitario es una prueba básica que verifica que el componente funciona correctamente bajo condiciones normales.
El primer paso es entender completamente la funcionalidad que estamos probando. En este caso, queremos verificar que la calculadora asigna correctamente los puntos según la ubicación.
Para implementar este test, necesitaremos:
- Crear instancias de lugares con coordenadas que caigan dentro de las diferentes categorías.
- Llamar a la función
calculate experience
con estos lugares. - Verificar que el resultado sea la suma esperada de puntos.
Utilizando Truth, podríamos escribir algo como:
@Test
public void calculateExperience_withDifferentPlaces_returnsCorrectSum() {
// Arrange (Condiciones)
Place touristPlace = new Place(/* coordenadas de lugar turístico */);
Place culturalPlace = new Place(/* coordenadas de área cultural */);
List<Place> places = Arrays.asList(touristPlace, culturalPlace);
// Act (Acciones)
int result = experienceCalculator.calculateExperience(places);
// Assert (Resultados)
assertThat(result).isEqualTo(9); // 5 + 4 = 9
}
Este test verifica que al pasar un lugar turístico (5 puntos) y un área cultural (4 puntos), la calculadora devuelve correctamente la suma de 9 puntos.
La implementación de pruebas efectivas es fundamental para garantizar la calidad del software. Al entender la estructura de los tests y utilizar frameworks como Truth, podemos crear pruebas legibles y mantenibles que nos ayuden a detectar problemas tempranamente. ¿Has implementado pruebas en tus proyectos? Te invitamos a compartir tus experiencias en la sección de comentarios.