{"id":22157847,"url":"https://github.com/lsmcodes/junit-testes-unitarios","last_synced_at":"2025-03-24T14:48:15.051Z","repository":{"id":245019788,"uuid":"816078871","full_name":"lsmcodes/junit-testes-unitarios","owner":"lsmcodes","description":"Resolução de exercício inspirado nos exercícios apresentados durante o curso \"Testes Unitários com JUnit\" - DIO","archived":false,"fork":false,"pushed_at":"2024-07-05T01:27:53.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-29T19:48:33.426Z","etag":null,"topics":["exercises","junit5","santander-bootcamp-2024"],"latest_commit_sha":null,"homepage":"http://www.dio.me","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/lsmcodes.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":"2024-06-17T01:51:54.000Z","updated_at":"2024-07-09T01:27:15.000Z","dependencies_parsed_at":"2025-01-29T19:42:41.100Z","dependency_job_id":"d2ea92ad-9d6e-483f-ad16-d7a16864d6c5","html_url":"https://github.com/lsmcodes/junit-testes-unitarios","commit_stats":null,"previous_names":["lsmcodes/junit-testes-unitarios"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsmcodes%2Fjunit-testes-unitarios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsmcodes%2Fjunit-testes-unitarios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsmcodes%2Fjunit-testes-unitarios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsmcodes%2Fjunit-testes-unitarios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lsmcodes","download_url":"https://codeload.github.com/lsmcodes/junit-testes-unitarios/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245294764,"owners_count":20591899,"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":["exercises","junit5","santander-bootcamp-2024"],"created_at":"2024-12-02T03:15:47.407Z","updated_at":"2025-03-24T14:48:15.033Z","avatar_url":"https://github.com/lsmcodes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DIO - Trilha Testes e Gerenciamento de Dependências Java\n\u003cdiv style=\"display:inline-block\"\u003e\n        \u003cpicture\u003e\n                \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://img.shields.io/badge/Java-black?style=for-the-badge\u0026logo=OpenJDK\u0026logoColor=white\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Java-white?style=for-the-badge\u0026logo=OpenJDK\u0026logoColor=black\" /\u003e\n        \u003c/picture\u003e\n        \u003cpicture\u003e\n                \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://img.shields.io/badge/Maven-black?style=for-the-badge\u0026logo=ApacheMaven\u0026logoColor=white\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Maven-white?style=for-the-badge\u0026logo=ApacheMaven\u0026logoColor=black\" /\u003e\n        \u003c/picture\u003e\n        \u003cpicture\u003e\n                \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://img.shields.io/badge/Spring_Boot-black?style=for-the-badge\u0026logo=SpringBoot\u0026logoColor=white\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Spring_Boot-white?style=for-the-badge\u0026logo=SpringBoot\u0026logoColor=black\" /\u003e\n        \u003c/picture\u003e\n        \u003cpicture\u003e\n                \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://img.shields.io/badge/JUnit5-black?style=for-the-badge\u0026logo=JUnit5\u0026logoColor=white\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/JUnit5-white?style=for-the-badge\u0026logo=JUnit5\u0026logoColor=black\" /\u003e\n        \u003c/picture\u003e\n\u003c/div\u003e\n\n## Repositório Original do Curso\n- [JUnit 5 Exemplos](https://github.com/willyancaetano/junit5-exemplos)\n\n## JUnit 5\n`JUnit 5` é a geração atual do framework de testes JUnit, que provê uma base moderna para `testes` do lado de desenvolvedor na JVM (Java Virtual Machine).\n\n## Exercícios\nEste repositório contém um exercício que exemplifica a utilização do JUnit 5 e que cobre os seguintes temas:\n- Before e After\n- Assumptions e testes condicionais\n- Testando Exceptions\n- Ordenação de testes\n\n## Configurar JUnit 5\nPara utilizar o JUnit, adicione a dependência JUnit Jupiter Engine ao arquivo `pom.xml` ou ao `build.gradle` do seu projeto.\n### Maven\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.junit.jupiter\u003c/groupId\u003e\n    \u003cartifactId\u003ejunit-jupiter-engine\u003c/artifactId\u003e\n    \u003cversion\u003e5.10.2\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle\n```groovy\ntestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.2'\n```\n\n## Escrevendo Testes\nNo exemplo a seguir há uma visão geral dos requerimentos básicos para o desenvolvimento de um teste.\n```java\nimport static org.junit.jupiter.api.Assertions.assertEquals;\n\nimport io.github.lsmcodes.junit.Conversor;\n\nimport org.junit.jupiter.api.Test;\n\nclass ConversorTestes {\n        @Test\n        void converterCelsiusParaFahrenheit_DeveConverterCorretamente_QuandoReceberValorValido() {\n                // Arrange (arranjar)\n                Conversor conversor = new Conversor();\n                double fahrenheit = 74.3;\n                double celsius = 23.5;\n\n                // Act (agir)\n                double celsiusParaFahrenheit = conversor.converterCelsiusParaFahrenheit(celsius);\n\n                // Assert (afirmar)\n                assertEquals(fahrenheit, celsiusParaFahrenheit);\n        }\n}\n```\n\n## Anotações\nA seguir estão as anotações utilizadas no exercício e suas respectivas descrições.\n\n| Anotação           | Descrição                                                               |\n|--------------------|-------------------------------------------------------------------------|\n| `@Test`            | Denota que o método anotado é um método de teste                        |\n| `@TestMethodOrder` | Define a ordem de execução dos métodos da classe anotada                |\n| `@DisplayName`     | Declara um nome customizado para a classe ou o método de teste          |\n| `@BeforeEach`      | O método anotado deve ser executado antes de cada @Test                 |\n| `@AfterEach`       | O método anotado deve ser executado depois de cada @Test                |\n| `@BeforeAll`       | O método anotado deve ser executado antes de todos os métodos de teste  |\n| `@AfterAll`        | O método anotado deve ser executado depois de todos os métodos de teste |\n\n## Boas Práticas\n### Código-fonte\nÉ uma boa prática manter as classes de teste separadas do código principal. Então os testes são desenvolvidos, executados e mantidos separadamente do código de produção. As implementações de testes são normalmente feitas em `src/test`.\n\n### Convenções de Nomenclatura de Packages\nO package da classe de teste deve ser o mesmo da classe original da qual as unidades estão sendo testadas. Por exemplo, no exercício contido no presente repositório há a classe `Conversor` no package `src/main/java/io/github/lsmcodes/junit`, a classe de teste que vai testar as unidades dessa classe deve estar no package `src/test/java/io/github/lsmcodes/junit`.\n\n### Convenções de Nomenclatura de Casos de Testes\nOs nomes dos casos de testes devem ser descritivos de forma que seja possível compreender qual é o comportamento do teste pelo seu nome. Por exemplo, se há um método `converterCelsiusParaFahrenheit(double celsius)` o caso de teste pode ter um nome como `converterCelsiusParaFahrenheit_DeveLancarExcecao_QuandoReceberValorInvalido()`.\n\n### 80% de Cobertura de Testes\nQuanto mais cobertura de testes para o código-fonte, melhor. Mas como regra geral o ideal é alcançar a cobertura de pelo menos `80% do código` com testes unitários. Adicionalmente, é possível utilizar ferramentas como `JaCoCo` e `Cobertura` junto com Maven ou Gradle para gerar relatórios de cobertura de código.\n\n## Referências\n- JUnit 5 - https://junit.org/junit5/\n- JUnit 5 User Guide - https://junit.org/junit5/docs/current/user-guide/\n- Best Practices for Unit Testing - https://www.baeldung.com/java-unit-testing-best-practices","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsmcodes%2Fjunit-testes-unitarios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flsmcodes%2Fjunit-testes-unitarios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsmcodes%2Fjunit-testes-unitarios/lists"}