Ver Mensaje Individual
  #40 (permalink)  
Antiguo 08/05/2017, 00:01
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Implementar TablaHash

Es interesante que digas que "aparentemente" ninguno falla.
Los tests que muestras estan construidos para generar en su salida alguna informacion, y es quien ejecuta el test que tiene que leer y darse cuenta si lo mostrado tiene sentido. Al menos eso es lo que note.

Hechos asi, los tests estan mal construidos. Los tests tienen que probar algo y mostrar un resultado. El test pasa o no pasa. Hay libraries que permiten probar e.g. JUnit, pero si no quieres usarla, al menos construye los tests para que ellos mismos prueben que lo que hiciste esta bien.

ejemplo de test:

Código:
void SI_hash_vacio_CUANDO_inserto_3_elementos_ENTONCES_hash_tiene_tamano_3() {
  // SI ..
  final MiHash h = new MiHash();

  // CUANDO ..
  h.add(clave1, valor1);
  h.add(clave2, valor2);
  h.add(clave3, valor3);

  // ENTONCES ..
  asegurar( h.size() == 3 );
  <indicar que el test tuvo exito>
}

void asegurar(final boolean condicion) {
   if(condicion == false) {
       <mostrar mensaje de error> o bien
       <arrojar una exception> 
   }
}
No hagas un menu para probar, ejecuta todas las pruebas todas las veces.
Elimina todos los System.out.println() de tus tests, no son necesarios.

Los nombres de los tests tienen que indicar lo que prueban.
De este modo, uno puede enumerar exactamente lo que estan probando.
Malos nombres: GetItemTest, RemoveItemTest, etc.
Mejores nombres: SI_hay_1_entry_CUANDO_se_inserta_igual_clave_ENTON CES_segundo_entry_reemplaza_al_primero
SI_hash_tiene_10_elementos_CUANDO_remuevo_3_elemen tos_ENTONCES_hash_tiene_tamano_7
etc

Los tests tienen que ser sencillos y probar 1 sola cosa.

Olvidate de optimizar tu recorrido. Mejora tus tests primero y ante la pregunta de si tus tests funcionan, tu respuesta tiene que ser si o no. No puede ser que "aparentemente" funcionan. Con buenos nombres sera facil decir que cosas estas probando y recibir sugerencias de que cosas te falta probar.

Como sabes si tus tests son suficientes?
A veces es conveniente medir cuanto del codigo que escribiste esta siendo probado por algun test. Si existe parte del codigo del hashmap que ningun test ejercita, o borras el codigo o construyes un test que lo pruebe.
__________________
Visita mi perfil en LinkedIn

Última edición por CalgaryCorpus; 08/05/2017 a las 06:40