Duda Sobre laboratorio JUnit

2 views
Skip to first unread message

niquefa

unread,
Oct 22, 2009, 1:23:12 AM10/22/09
to is1_unal_2009_02
Al mirar el tutorial pensé que la intención de lo siguiente:

Usuario u = new Usuario();
u.setContrasenia("1234");
u.setNombre("AB");
sistema.getUsuarios().add(u);
u.setContrasenia("abcdefghij");
u.setNombre("ABCDEFGHIJ");
sistema.getUsuarios().add(u);
u.setContrasenia("arepa");
u.setNombre("sara");
sistema.getUsuarios().add(u);

era llenar el ArrayList con tres usuarios diferentes, pero al solo
instanciar una vez, se crea un solo usuario, y luego se modifican los
valores, pero al hacer el .add(), se está agregando siempre la misma
referencia, por lo que al final del codigo anterior en el ArrayList
quedarán 3 referencias pero al mismo objeto de contraseña arepa y
nombre sara, lo que hará que "fallen" los casos:

Prueba :9 con Nombre = "ABCDEFGHIJ" y contrasenia =
"ABCDEFGHIJ"
Prueba :11 con Nombre = "ABCDEFGHIJ" y contrasenia =
"abcdefghij"
Prueba :12 con Nombre = "AB" y contrasenia = "1234"

Porque nunca los encontrará, en los anteriores 3 casos arrojará
DATOS_INCORRECTOS, me pregunto si esa si era la intención o si se
debía hacer algo así:

Usuario u = new Usuario();
Usuario u1 = new Usuario();
Usuario u2 = new Usuario();
u.setContrasenia("1234");
u.setNombre("AB");
sistema.getUsuarios().add(u);
u1.setContrasenia("abcdefghij");
u1.setNombre("ABCDEFGHIJ");
sistema.getUsuarios().add(u1);
u2.setContrasenia("arepa");
u2.setNombre("sara");
sistema.getUsuarios().add(u2);

Con lo anterior, las pruebas 9 , 11 y 12 de la guía arrojarán
INGRESO_AUTORIZADO.

¿Cual de las dos cosas era la que se debía hacer?

Diego Andres Montealegre Garcia

unread,
Oct 22, 2009, 2:12:45 AM10/22/09
to is1_unal...@googlegroups.com, is1_unal_2009_02

tiene q generar todos los user ;)
________________________________
Diego Andres montealegre Garcia
cod. 257513
Ing de sistemas
----------------------------------------------------
|no se como sera la tercera guerra mundial, pero la| |cuarta sera con piedras |
----------------------------------------------------

----- Mensaje original -----
De: niquefa <niq...@gmail.com>
Fecha: Jueves, Octubre 22, 2009 0:23 am
Asunto: IS1_UNAL Duda Sobre laboratorio JUnit

miguel

unread,
Oct 24, 2009, 10:06:57 PM10/24/09
to is1_unal...@googlegroups.com
Buenos días Rafael,

El 22 de octubre de 2009 00:23, niquefa <niq...@gmail.com> escribió:

Al mirar el tutorial pensé que la intención de lo siguiente:

       Usuario u = new Usuario();
       u.setContrasenia("1234");
       u.setNombre("AB");
       sistema.getUsuarios().add(u);
       u.setContrasenia("abcdefghij");
       u.setNombre("ABCDEFGHIJ");
       sistema.getUsuarios().add(u);
       u.setContrasenia("arepa");
       u.setNombre("sara");
       sistema.getUsuarios().add(u);

era llenar el ArrayList con tres usuarios diferentes,

En efecto, esa era la intención, pero cometí un error en este punto, esto después lo arreglé, pero al editar el video lo eliminé, perdón por ese detalle :)
 
pero al solo
instanciar una vez, se crea un solo usuario, y luego se modifican los
valores, pero al hacer el .add(), se está agregando siempre la misma
referencia, por lo que al final del codigo anterior en el ArrayList
quedarán 3 referencias pero al mismo objeto de contraseña arepa y
nombre sara, lo que hará que "fallen" los casos:

Prueba :9        con Nombre = "ABCDEFGHIJ" y contrasenia =
"ABCDEFGHIJ"
Prueba :11        con Nombre = "ABCDEFGHIJ" y contrasenia =
"abcdefghij"
Prueba :12        con Nombre = "AB" y contrasenia = "1234"

 
Tiene toda la razón, pues  cuando se ejecuta como yo lo propuse en el tutorial, lo que haría sería:

Usuario u = usuario(nombre = "AB", contrasenia = "1234")
Sistema.usuarios = usuarios{u = (nombre = "AB", contrasenia = "1234")}
 
u = usuario (nombre = "ABCDEFGHIJ", contrasenia = "abcdefghij")
Sistema.usuarios = usuarios{u = (nombre = "ABCDEFGHIJ", contrasenia = "abcdefghij"),
                                           u = (nombre = "ABCDEFGHIJ", contrasenia = "abcdefghij")}

u = usuario (nombre = "sara", contrasenia = "arepa")
Sistema.usuarios = usuarios{u = (nombre = "sara", contrasenia = "arepa"),
                                           u = (nombre = "sara", contrasenia = "arepa"),
                                           u = (nombre = "sara", contrasenia = "arepa")}

Porque nunca los encontrará, en los anteriores 3 casos arrojará
DATOS_INCORRECTOS, me pregunto si esa si era la intención o si se
debía hacer algo así:

       Usuario u = new Usuario();
       Usuario u1 = new Usuario();
       Usuario u2 = new Usuario();
       u.setContrasenia("1234");
       u.setNombre("AB");
       sistema.getUsuarios().add(u);
       u1.setContrasenia("abcdefghij");
       u1.setNombre("ABCDEFGHIJ");
       sistema.getUsuarios().add(u1);
       u2.setContrasenia("arepa");
       u2.setNombre("sara");
       sistema.getUsuarios().add(u2);

Exacto, esta es una solución a este problema.


Con lo anterior, las pruebas 9 , 11 y 12 de la guía arrojarán
INGRESO_AUTORIZADO.

¿Cual de las dos cosas era la que se debía hacer?

La solución que usted ha propuesto es la correcta. Tenga en cuenta que también cometí otros errores, por ejemplo, usé los nombres hasta la k, y solo hasta ejecutar las pruebas noté que debían ir solo hasta la j, este también fué un error que corregí después, pero que cuya corrección no se nota.

Pronto haré un nuevo tutorial de este tema para referencia futura, además intentaré regenerar los anteriores tutoriales para optimizar la resolución (con un costo de tamaño) y cuando estén listo los iré agregando notificándoles a ustedes.

Hasta luego,

--
Miguel Cubides
Ingeniería de Sistemas
Universidad Nacional
Reply all
Reply to author
Forward
0 new messages