Tabla de Contenidos:
En el desarrollo de software, la implementación de pruebas unitarias es fundamental para garantizar la calidad y fiabilidad del código. En este proyecto se creara un sistema de gestión de bibloteca en Java, aplicando pruebas unitarias con JUnit 5 y Mockito.
Puedes encontrar el video aquí 🎥.
Puedes encontrar el repositorio guía aquí 📄.
Desarrollar una aplicación de escritorio que permita:
- Sistema:
- Uso de JUnit 5:
- Uso de Mockito
- Manejo de excepciones.
Implementar un sistema de gestión de biblioteca en Java que permita la administración de libros, usuarios y préstamos.
Desarrollar pruebas unitarias con JUnit 5 para validar la funcionalidad de la capa de servicio.
Utilizar Mockito para simular el comportamiento de los repositorios y asegurar pruebas unitarias efectivas.
Implementar el manejo de excepciones en Java para capturar y gestionar errores de manera eficiente.
- Mejora la calidad del código:
- Facilita el mantenimiento:
- Promueve el desarrollo basado en pruebas (TDD):
- Reduce el tiempo de depuración:
Permite detectar errores antes de la implementación en producción.
Un código con pruebas bien diseñadas es más facil de modificar y escalar.
Ayuda a diseñar software de manera más estructurada y modular.
La detección temprana de errores evita la acumulación de fallos.
La aplicación de gestión de biblioteca permite a los usuarios registrarse, buscar libros en un catálogo organizado, y solicitar préstamos, mientras el sistema verifica la disponibilidad y registra las fechas de devolución. Los administradores pueden gestionar inventarios, añadir nuevos libros, y monitorear préstamos y devoluciones. Además, se aplican penalizaciones automáticas por retrasos y se generan estadísticas para optimizar el uso de recursos. Todo esto crea un flujo eficiente para conectar usuarios con los libros de manera organizada y automatizada.
- Agregar un Libro: El usuario introduce los datos de un nuevo libro en la biblioteca.
- Consultar un Libro: Se obtiene información detallada de un libro a partir de su ID.
- Registrar un Usuario: Un usuario solicita un libro, registrándose la fecha de préstamo.
- Consultar Préstamos por Usuario: Se obtiene el historial de préstamos realizados por un usuario.
- Gestión de Libros:
- Agregar un libro con ID, título y autor.
- Obtener un libro mediante su ID.
- Gestión de Usuarios:
- Crear un usuario con ID y nombre.
- Gestión de Préstamos:
- Prestar un libro a un usuario registrando la fecha del préstamo.
- Obtener todos los préstamos de un usuario específico.
- Pruebas de LibraryService
- Validar la adición de un libro.
- Validar la recuperación de un libro por ID.
- Validar la creación de un usuario.
- Validar el préstamo de un libro a un usuario.
- Validar la consulta de préstamos por usuario
- Uso de Mockito
- Simular la interacción con BookRepository y LoanRepository.
Para grarantiar la estabilidad del sistema, se implementará el manejo de excepciones con try y catch. Algunos casos de uso incluyen:
- Libro no encontrado: Lanzar una NoSuchElementException si el libro solicitado no existe en la base de datos.
- Usuario no encontrado: Lanzar una IllegalArgumentException si se intenta prestar un libro a un usuario inexistente.
- Libro ya prestado: Capturar un posible error si un libro ya ha sido prestado y evitar que se preste nuevamente sin ser devuelto.
- Errores generales de base de datos Uso de SQLException para manejar errores de conexión o consulta a la base de datos.
Para ejecutar este programa es necesario tener el JDK 21 de Java. Este se puede descargar desde el sitio de Oracle
Instrucciones para configurar el proyecto localmente:
- IDE (IntelliJ, Eclipse, NetBeans, VSCode, etc).
- JDK > 21 Download JDK
Nota: Este es un proyecto de uso estudiantil, no debe utilizarse para uso comercial.
# Clona el repositorio
git clone https://github.com/dnbsammie/Reto03.git
cd Reto03-clone
# Ejecuta el projecto
javac Main.java
java MainFig. 1: Imágenes de ejemplo del proyecto.
public class Book {
private final String id, title, author;
private boolean isBorrowed;
public Book(String id, String title, String author, boolean isBorrowed) {
this.id = id;
this.title = title;
this.author = author;
isBorrowed = false;
}
public String getId() {return id;}
public String getTitle() {return title;}
public String getAuthor() {return author;}
public boolean isBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean isBorrowed) {
this.isBorrowed = isBorrowed;
}
}
Integrante 1: Alejandro Ramirez
GitHub: https://github.com/Alejo12680
Integrante 2: Samuel Rivera
GitHub: https://github.com/dnbsammie