Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alansastre/java-junit-mockito
Ejemplos de testing unitario con JUnit 5 y Mockito en Java.
https://github.com/alansastre/java-junit-mockito
java java11 java17 java8 junit junit5 mockito testing unit-testing
Last synced: 10 days ago
JSON representation
Ejemplos de testing unitario con JUnit 5 y Mockito en Java.
- Host: GitHub
- URL: https://github.com/alansastre/java-junit-mockito
- Owner: alansastre
- Created: 2021-10-18T07:52:49.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-10-22T07:39:52.000Z (over 3 years ago)
- Last Synced: 2024-11-13T16:52:27.697Z (2 months ago)
- Topics: java, java11, java17, java8, junit, junit5, mockito, testing, unit-testing
- Language: Java
- Homepage:
- Size: 46.9 KB
- Stars: 6
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Crear un nuevo proyecto con maven + junit:
Crear nuevo proyecto maven.
Añadir en el pom.xml dentro de la etiqueta project:
```xml
org.junit.jupiter
junit-jupiter
5.8.1
test
```## Tests con JUnit
Los test se crean en paquetes java dentro del directorio `src/test/java`
Se crean clases java con métodos donde cada uno lleva la anotación `@Test`.
Mediante el uso de aserciones (métodos de la clase Asssertions) testeamos métodos
del código principal (`src/main/java`).En cada clase de test, añadir el siguiente import:
```java
import static org.junit.jupiter.api.Assertions.*;
```## Conceptos Testing unitario con JUnit
1. Aserciones, cómo crear tests, cómo testear
2. @DisplayName
3. assertAll()
4. assertThrows()
5. @BeforeEach, @AfterEach, @BeforeAll, @AfterAll
6. @Disabled
7. Tests condicionales:
1. Anotaciones: @Enabled...
2. Assumptions: assumeTrue()...
8. @Nested
9. Tests con repetición:
1. @RepeatedTest
2. @ParameterizedTest
10. @Tag
11. Suites de testing# Mockito
https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html
### Clases a testear en la aplicación
1. Controlador: clases que reciben peticiones HTTP y ejecutan métodos de servicios/repositorios para llevar una acción
1. Servicio
2. Repositorio
2. Servicio: clase que recibe las llamadas de los controladores, tienen métodos para realizar acciones CRUD y demás acciones de lógica de negocio.
1. Servicio
2. Repositorio
3. Repositorio: capa que interactúa con la base de datos para realizar las operaciones CRUD.Las entidades se utilizan en todas las anteriores.
### Escenario:
método Controlador --> Método Servicio 1 --> Método Servicio 2 --> método Repositorio 1
Se harán test para cada uno de forma individualizada. Por lo tanto no es necesario que desde cualquiera de ellos
se testeen también sus dependencias.### Objetivo de mockito
No tener que testear todo una y otra vez.
método Controlador --> Mock Servicio 1
Framework para facilitar el testing de métodos de clases que tienen/usan dependencia/s.
Las clases que normalmente se testean con mockito van a ser capas:
* Controlador que depende de un servicio. El servicio es una dependencia y se puede hacer mock de la misma.
* Servicio que depende de un repositorio. El repositorio es una dependencia y se puede hacer mock de la misma.
* Servicio que depende de otro servicio. El repositorio es una dependencia y se puede hacer mock de la misma.EmployeeService que depende de EmployeeRepository.
1. JUnit
Al testear EmployeeService se está ejecutando EmployeeRepository
## Comprobaciones desde los test:
* Métodos assert (JUnit): sirven para comprobar si se cumple una condición sobre el resultado obtenido.
* Método verify (Mockito): sirve para verificar si un método en el mock ha sido ejecutado un número determinado de veces.## Esquema de pasos para trabajar con Mockito
1. Configurar mock/s: when(), thenReturn()
2. Ejecutar el comportamiento o método a testear
3. Comprobar y verificar## Formas de inicializar Mockito
* Utilizando el método estático `mock()`
* Utilizando las anotaciones `@Mock` y `@InjectMocks` inicializando `@ExtendWith(MockitoExtension.class)`
* Utilizando las anotaciones `@Mock` y `@InjectMocks` inicializando `MockitoAnnotations.openMocks(this)` en un setUp()## Caso M3
* Crear casos de test para lograr ~80 % de cobertura
* JUnit y Mockito