{"id":20094599,"url":"https://github.com/alansastre/java-junit-mockito","last_synced_at":"2025-09-20T21:31:58.383Z","repository":{"id":152300378,"uuid":"418399015","full_name":"alansastre/java-junit-mockito","owner":"alansastre","description":"Ejemplos de testing unitario con JUnit 5 y Mockito en Java.","archived":false,"fork":false,"pushed_at":"2021-10-22T07:39:52.000Z","size":48,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-13T16:52:27.697Z","etag":null,"topics":["java","java11","java17","java8","junit","junit5","mockito","testing","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alansastre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-18T07:52:49.000Z","updated_at":"2024-10-24T10:32:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"59739142-60f9-4191-b9cb-83e1e568aae9","html_url":"https://github.com/alansastre/java-junit-mockito","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-junit-mockito","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-junit-mockito/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-junit-mockito/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alansastre%2Fjava-junit-mockito/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alansastre","download_url":"https://codeload.github.com/alansastre/java-junit-mockito/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233689320,"owners_count":18714656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","java11","java17","java8","junit","junit5","mockito","testing","unit-testing"],"created_at":"2024-11-13T16:51:22.695Z","updated_at":"2025-09-20T21:31:53.050Z","avatar_url":"https://github.com/alansastre.png","language":"Java","readme":"\n## Crear un nuevo proyecto con maven + junit: \n\nCrear nuevo proyecto maven. \n\nAñadir en el pom.xml dentro de la etiqueta project: \n\n```xml\n    \u003cdependencies\u003e\n        \u003c!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter --\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eorg.junit.jupiter\u003c/groupId\u003e\n            \u003cartifactId\u003ejunit-jupiter\u003c/artifactId\u003e\n            \u003cversion\u003e5.8.1\u003c/version\u003e\n            \u003cscope\u003etest\u003c/scope\u003e\n        \u003c/dependency\u003e\n\n    \u003c/dependencies\u003e\n```\n\n## Tests con JUnit \n\nLos test se crean en paquetes java dentro del directorio `src/test/java`\n\nSe crean clases java con métodos donde cada uno lleva la anotación `@Test`.\n\nMediante el uso de aserciones (métodos de la clase Asssertions) testeamos métodos \ndel código principal (`src/main/java`). \n\nEn cada clase de test, añadir el siguiente import: \n\n```java\nimport static org.junit.jupiter.api.Assertions.*;\n```\n\n## Conceptos Testing unitario con JUnit\n\n1. Aserciones, cómo crear tests, cómo testear\n2. @DisplayName\n3. assertAll()\n4. assertThrows()\n5. @BeforeEach, @AfterEach, @BeforeAll, @AfterAll\n6. @Disabled\n7. Tests condicionales:\n   1. Anotaciones: @Enabled...\n   2. Assumptions: assumeTrue()...\n8. @Nested\n9. Tests con repetición:\n   1. @RepeatedTest \n   2. @ParameterizedTest\n10. @Tag \n11. Suites de testing\n\n# Mockito \n\nhttps://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html\n\n### Clases a testear en la aplicación \n\n1. Controlador: clases que reciben peticiones HTTP y ejecutan métodos de servicios/repositorios para llevar una acción\n   1. Servicio\n   2. Repositorio\n2. 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.\n   1. Servicio\n   2. Repositorio\n3. Repositorio: capa que interactúa con la base de datos para realizar las operaciones CRUD.\n\nLas entidades se utilizan en todas las anteriores. \n\n### Escenario: \n\nmétodo Controlador --\u003e Método Servicio 1 --\u003e Método Servicio 2 --\u003e método Repositorio 1\n\nSe harán test para cada uno de forma individualizada. Por lo tanto no es necesario que desde cualquiera de ellos \nse testeen también sus dependencias. \n\n### Objetivo de mockito \n\nNo tener que testear todo una y otra vez.\n\nmétodo Controlador --\u003e Mock Servicio 1\n\nFramework para facilitar el testing de métodos de clases que tienen/usan dependencia/s. \n\nLas clases que normalmente se testean con mockito van a ser capas:\n\n* Controlador que depende de un servicio. El servicio es una dependencia y se puede hacer mock de la misma. \n* Servicio que depende de un repositorio. El repositorio es una dependencia y se puede hacer mock de la misma.\n* Servicio que depende de otro servicio. El repositorio es una dependencia y se puede hacer mock de la misma.\n\nEmployeeService que depende de EmployeeRepository. \n\n1. JUnit \n\nAl testear EmployeeService se está ejecutando EmployeeRepository \n\n## Comprobaciones desde los test: \n\n* Métodos assert (JUnit): sirven para comprobar si se cumple una condición sobre el resultado obtenido. \n* Método verify (Mockito): sirve para verificar si un método en el mock ha sido ejecutado un número determinado de veces.\n\n## Esquema de pasos para trabajar con Mockito\n\n1. Configurar mock/s: when(), thenReturn()\n2. Ejecutar el comportamiento o método a testear \n3. Comprobar y verificar\n\n## Formas de inicializar Mockito\n\n* Utilizando el método estático `mock()`\n* Utilizando las anotaciones `@Mock` y `@InjectMocks` inicializando `@ExtendWith(MockitoExtension.class)`\n* Utilizando las anotaciones `@Mock` y `@InjectMocks` inicializando `MockitoAnnotations.openMocks(this)` en un setUp()\n\n\n## Caso M3\n\n* Crear casos de test para lograr ~80 % de cobertura\n* JUnit y Mockito","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falansastre%2Fjava-junit-mockito","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falansastre%2Fjava-junit-mockito","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falansastre%2Fjava-junit-mockito/lists"}