CodeGym/Cursos Java/Módulo 3. Java Professional/Proyecto relacionado: pruebas y registro

Proyecto relacionado: pruebas y registro

Disponible

Este programa es una imitación de un hipódromo.

Para empezar, como en el proyecto anterior, hazte una bifurcación del repositorio: https://github.com/CodeGymCC/hippodrome , y clona esta bifurcación tú mismo.

Su tarea es agregar pruebas y registros.

Lista de pruebas requeridas

En la siguiente lista, cada elemento debe implementarse como un método de prueba separado. Cuando piense en nombres para los métodos de prueba, intente ser conciso, pero al mismo tiempo, para que pueda comprender aproximadamente qué se está probando exactamente en ellos. Por ejemplo, compare estos dos resultados de prueba:

En el segundo caso, es más difícil entender qué tipo de pruebas no pasaron, y tendrá que mirar los registros.

1. Clase de caballos:

  1. constructor
    • Comprueba que cuando se pase al constructor como primer parámetro IllegalArgumentException, se lanzará null. Para hacer esto, use el método assertThrows;
    • Verifique que cuando se pase al constructor como el primer parámetro null, la excepción lanzada contendrá el mensaje "El nombre no puede ser nulo". Para hacer esto, debe obtener un mensaje de la excepción detectada y usar el assertEquals;
    • Compruebe que al pasar una cadena vacía o una cadena que contiene solo caracteres de espacio en blanco (espacio, tabulación, etc.) como primer parámetro al constructor, se lanzará IllegalArgumentException. Para probar con diferentes variantes de caracteres de espacio en blanco, debe parametrizar la prueba;
    • Compruebe que al pasar una cadena vacía o una cadena que contiene solo caracteres de espacio en blanco (espacio, tabulador, etc.) al constructor como primer parámetro, la excepción lanzada contendrá el mensaje "El nombre no puede estar en blanco";
    • Compruebe que cuando se pasa un número negativo al constructor como segundo parámetro, IllegalArgumentException;
    • Compruebe que cuando se pasa un número negativo al constructor como segundo parámetro, la excepción lanzada contendrá el mensaje "La velocidad no puede ser negativa";
    • Compruebe que cuando se pasa un número negativo al constructor como tercer parámetro, IllegalArgumentException;
    • Compruebe que al pasar un número negativo como tercer parámetro al constructor, la excepción lanzada contendrá el mensaje "La distancia no puede ser negativa";
  2. método getName
    • Compruebe que el método devuelve la cadena que se pasó como primer parámetro al constructor;
  3. método getSpeed
    • Compruebe que el método devuelve el número que se pasó como segundo parámetro al constructor;
  4. método getDistance
    • Compruebe que el método devuelve el número que se pasó como tercer parámetro al constructor;
    • Compruebe que el método devuelve cero si el objeto se creó utilizando un constructor con dos parámetros;
  5. método de movimiento
    • Compruebe que el método llama dentro del método getRandomDoublecon los parámetros 0.2 y 0.9. Para hacer esto, necesitas usar MockedStaticsu método verify;
    • Compruebe que el método asigna el valor de distancia calculado por la fórmula: distance + speed * getRandomDouble(0.2, 0.9). Para hacer esto, debe bloquearlo getRandomDoublepara que devuelva ciertos valores que debe configurar parametrizando la prueba.

2. Clase hipódromo:

  1. Constructor
    • Compruebe que cuando se pasa al constructor IllegalArgumentException, se lanzará null;
    • Compruebe que cuando se pasa al constructor null, la excepción lanzada contendrá el mensaje "Los caballos no pueden ser nulos";
    • Comprueba que al pasar una lista vacía al constructor, se lanzará IllegalArgumentException;;
    • Compruebe que al pasar una lista vacía al constructor, la excepción lanzada contendrá el mensaje "Los caballos no pueden estar vacíos";
  2. método getHorses
    • Compruebe que el método devuelve una lista que contiene los mismos objetos y en el mismo orden que la lista que se pasó al constructor. Al crear el objeto Hippodrome , pase una lista de 30 caballos diferentes al constructor;
  3. método de movimiento
    • Compruebe que el método llame al método de movimiento en todos los caballos. Al crear el objeto Hippodrome, pase una lista de 50 caballos simulados al constructor y use el verify.
  4. método getWinner
    • Compruebe que el método devuelve el caballo con el mayor valor de distancia.

3. Clase principal

  1. método principal
    • Compruebe que el método se ejecuta no más de 22 segundos. Para ello, utilice la anotación Timeout. Después de escribir esta prueba, desactívela (utilice la anotación Deshabilitado). Por lo tanto, no llevará tiempo ejecutar todas las pruebas y, si es necesario, se puede ejecutar manualmente.

Lo que necesita ser registrado

1. Clase principal:

  1. Después de crear el objeto hipódromo, agregue una entrada como esta al registro:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Después de mostrar información sobre los ganadores, agregue una entrada como esta al registro:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Clase hipódromo:

  1. Si se pasó nulo al constructor, antes de lanzar la excepción, agregue una entrada como esta al registro:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Si se pasó una lista vacía al constructor, antes de lanzar la excepción, agregue una entrada como esta al registro:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Al final del constructor, agregue una entrada como esta al registro:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Clase de caballos:

  1. Si se pasa nulo al constructor en lugar de un nombre, antes de lanzar la excepción, agregue una entrada al registro como:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Si el nombre pasado al constructor está vacío, antes de lanzar la excepción, agregue una entrada como esta al registro:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Si la velocidad pasada al constructor es menor que cero, antes de lanzar la excepción, agregue una entrada como esta al registro:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Si la distancia pasada al constructor es menor que cero, antes de lanzar la excepción, agregue una entrada como esta al registro:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Al final del constructor, agregue una entrada como esta al registro:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Los registros deben escribirse en el archivo hippodrome.log , que debe estar ubicado en la raíz del proyecto en la carpeta de registros . Todos los días se debe cambiar el nombre del archivo de acuerdo con el patrón hippodrome.2021-12-31.log y se debe crear un nuevo hippodrome.log en su lugar . Para hacer esto, use el agregador RollingFile . En este caso, se deben eliminar los archivos que tengan más de 7 días. Para hacer esto, puede usar una construcción como:

<DefaultRolloverStrategy>
    <Delete>
        <IfFileName/>
        <IfLastModified/>
    </Delete>
</DefaultRolloverStrategy>

Busqué en Google qué sustituir en lugar de tres puntos.😊


Análisis de proyectos . Ver después de la finalización!

Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios