Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Eva en 26 de Septiembre 2012, 14:36
-
Hola a todos!!!
Tengo un sistema de tareas desarrollado en java y necesito hacer test con junit sobre estos.
Para eso cuento con una clase Tarea cuyos atributos son: usuario,titulo,subtarea,etc; y otra clase llamada Usuario con atributos nombre y numero.
Mi problema es que deberia probar que un usuario pueda hacer varias tareas y cada tarea pueda ser realizada por varios usuarios (es decir que es una relacion N:N) y demostrar que el atributo subtarea es una tarea en si misma, y definitivamente no se como hacerlo...
Espero que me puedan ayudar!!!!!!!
-
Hola Eva, no soy experto en JUnit :-[ pero voy a tratar de aportar alguna idea a ver si te sirve.
Voy a suponer algunas cosas porque con la explicación que has dado no tengo claro cómo tienes organizado el código.
Voy a suponer que dentro de la clase Tarea existe un método boolean esTarea(Tarea t) { ... } que devuelve true si un objeto es una tarea y false si no es una tarea.
Voy a suponer que dentro de la clase Usuario tienes un método que se llame void hacerTarea (Tarea t) { ... } que da lugar a que el usuario haga una tarea.
Ahora sobre la clase Usuarios tendríamos que crear una clase de prueba de JUnit, por ejemplo UsuariosTest. Dentro de esa clase tendríamos el código en un método donde generamos un usuario y varias tareas y hacemos que ese usuario ejecute esas varias tareas, e igualmente tendríamos otro método donde generamos varios usuarios y una tarea y hacemos que esos varios usuarios ejecuten esa tarea.
Finalmente crearíamos un método donde creamos una tarea y consultamos mediante el método esTarea (Tarea t) si el atributo subtarea es una tarea en sí misma. Como en este método no simplemente estamos esperando "que se pueda ejecutar" sino un resultado concreto tendríamos que añadir una línea final donde se especifique la aserción de lo que queremos conseguir, por ejemplo:
assertEquals (true, objetoTareaCreado.esTarea(objetoTareaCreado.getSubtarea());
La llamada a assertEquals controla que el valor devuelto por el método coincida con el resultado esperado y de esa manera JUnit sabe si se obtiene un "resultado ok" o no.
Finalmente, una vez tienes la clase de prueba creada y los métodos de prueba, tendrías que ejecutarlos (por separado o conjuntamente) y verificar que JUnit te devuelve el resultado esperado para todos ellos.
Claro que para hacer esto hay que conocer el manejo básico de JUnit que normalmente está integrado con los IDEs (Eclipse, NetBeans, BlueJ, etc.) pero en cada IDE las herramientas que incorpora pueden ser un poco distintas, el concepto de aserción, etc.
Espero te sirva! :D
-
Buenisimo... Me sirve un monton y se agradece
Yo en teoria lo tenia pensado de la misma manera pero no terminaba de encontrar la forma de como hacerlo, asi que ya lo pongo en practica.
Mi codigo es basico asi que cualquier cosa lo comparto..
Gracias nuevamente :D!
-
Estuve probando lo que me sugirieron e hice lo siguiente:
public void testUsuarioQueRealizaVariasTareas(){
Usuario user = new Usuario("Rasmus",20);
Usuario usur = new Usuario("Telio",51);
Tarea responderConsultas= new Tarea("18/06/1978","AtencionClientes","RespuestasAConsultas");
Tarea relevarPrecios= new Tarea("30/08/1969","Pedidos","ControlarPrecios");
user.hacerTarea(responderConsultas);
usur.hacerTarea(responderConsultas);
}
como deberia hacer el Assert???
Usuario es una clase al igual que Tarea y el metodo hacerTarea recibe un string
-
Yo creo que en este caso no tienes que tener Assert. Con JUnit tendríamos dos tipos de pruebas:
a) Las pruebas en que comprobamos que algo se ejecuta, que creo que es el caso tuyo en el método que has puesto. Tu objetivo es probar que una tarea puede ser realizada por más de un usuario, entonces si el método se ejecuta ya JUnit te dirá "Successfull" o "Exito", es decir, se cumple el objetivo de la prueba.
b) Las pruebas en que comprobamos que un resultado coincide con el resultado esperado. Por ejemplo cuando tengas que verificar que una subtarea es una tarea el resultado esperado será no solo que se ejecute la comprobación sino que la comprobación dé como resultado "true", es decir, que lo esperado es que una subtarea sea una tarea. Entonces sí tienes que meter el assert para indicarle a JUnit que el verifique que el resultado obtenido es igual al esperado. Y JUnit no te dirá "éxito" simplemente porque se ejecute el método, sino que tendrá que ejecutarse y el resultado coincidir con el que tú le digas en el assert.