marttinguerrero / algo3-tp-2022c2

0 stars 0 forks source link

Pruebas #3

Open marttinguerrero opened 1 year ago

marttinguerrero commented 1 year ago

Hola Santiago, estoy teniendo un problema para poder realizar las pruebas. No se si me podrá ayudar. Gracias

smaraggi commented 1 year ago

Hola Martín, buenas tardes, necesitaría que me digas más específicamente cuál es tu problema. ¿Implementaste los tests unitarios? ¿Configuraste el proyecto siguiendo las indicaciones de Diego? Eso para empezar. Luego si tenés algún mensaje de error podríamos verlo más en detalle.

Los tests unitarios usan partes del sistema pero operando con ellos en un contexto artificial y aislado, que nos permite ver los resultados de las operaciones que probamos. Para esto tendrías que hacer las pruebas llamando a métodos de objetos creados para el test, específicamente... AAA: Arrange, Act, Assert.

Arrange significa instanciar y relacionar entre sí a los objetos que vas a usar de prueba. Act significa llamar a los métodos que querés probar. Assert significa evaluar los resultados obtenidos (en lugar de usar esos resultados y aplicarlos a otra parte del sistema).

Cuando en vez de un assert se toman esos resultados en una prueba para probar otra cosa, se llama prueba de integración, y no prueba unitaria, porque se prueba la interacción de dos componentes del sistema.

marttinguerrero commented 1 year ago

Gracias por responder, lo que me está sucediendo es que yo estoy poniendo un AssertEquals con la longitud de un ArrayList y con una variable de tipo int con el mismo valor que la longitud del array, pero me está dando este error "java.lang.NullPointerException: Cannot invoke "java.util.ArrayList.size()" because "Jugadores.Jugador.piezas" is null at Jugadores.Jugador.obtenerCantidadPiezas(Jugador.java:74) ". Cuando hago el print de la longitud del ArrayList en el main me da el valor correcto, es por esto que me hace dudar sobre el error. Gracias

smaraggi commented 1 year ago

Hola Martín, que raro lo que me comentás.

Cuando leés el array y te da que no es null lo hacés justo arriba del assertequals?

Lo que podés probar es leer todas las estructuras de datos antes del assertequals y guardar los valors finales a comparar en dos variables solas, así le metés al assert equals directamente estas variables, sin llamar métodos adentro del assert. Pienso que eso como 1era medida va a facilitar ver si el error se repite, donde y en qué circunstancia. El error claramente dice que hay una estructura en null a la que les estás pidiendo el largo del array, así que empezaría por desglosar las llamadas justo antes del assert equals.

No se si cuando decís que afuera del assert funciona te referís a que afuera del test funciona. Pensá que cuando armás un test, también definís un entorno "imaginario" para los datos, y que toda relación que sea necesaria se la deberías cargar a esas estructuras también, con datos inventados o "mocks" (estructuras que imitan a las reales). Sería la primera A del paradigma AAA que mencionamos.

marttinguerrero commented 1 year ago

Hola Santiago, por suerte pudimos solucionar el problema con las pruebas, gracias por la ayuda. Hasta que hora tenemos para entregar hoy? Gracias

smaraggi commented 1 year ago

Felicitaciones. Hasta las 23.59.59. Lo veremos mañana al TP, pero oficialmente se considera válido todo lo subido hasta hoy.

marttinguerrero commented 1 year ago

Hola Santiago, recién subimos el proyecto para la Etapa 2. Gracias