{"id":22944919,"url":"https://github.com/elfn/tdd","last_synced_at":"2026-07-02T19:03:04.341Z","repository":{"id":120686175,"uuid":"543830790","full_name":"Elfn/TDD","owner":"Elfn","description":"Principe du Test Driven Development à travers les tests unitaires","archived":false,"fork":false,"pushed_at":"2022-10-04T20:17:37.000Z","size":1184,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T14:22:57.237Z","etag":null,"topics":[],"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/Elfn.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":"2022-09-30T23:55:12.000Z","updated_at":"2022-10-21T15:02:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"476ff546-af80-474a-82ac-5f02d8ea014b","html_url":"https://github.com/Elfn/TDD","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/Elfn%2FTDD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elfn%2FTDD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elfn%2FTDD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elfn%2FTDD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Elfn","download_url":"https://codeload.github.com/Elfn/TDD/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246716791,"owners_count":20822520,"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":[],"created_at":"2024-12-14T14:28:39.051Z","updated_at":"2026-07-02T19:03:04.301Z","avatar_url":"https://github.com/Elfn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TDD\n\nLes tests pilotés par le développement, c’est une technique de développement qui permet d’écrire des tests qui échouent avant d’écrire l’implémentation, et cela se fait selon un processus en 3 étapes:\n\n1. **Ecrire des cas de test défaillants**\n2. **Reécrire les cas de test pour les faire réussir**\n3. **Refactoriser le code et le rendre simple**\n\n![Screenshot 2022-10-01 at 02 01 48](https://user-images.githubusercontent.com/29838473/193370732-7f34ee49-374f-43eb-85b6-88fa7c0b2cda.png)\n\n\n### Règles de l’Uncle Bob\n\n- **On est pas autorisé à écrire du code en production, sauf si il s’agit de faire fonctionner un test unitaire défaillant**\n- **On est pas autorisé à écrire plus d'un test unitaire que ce qui est suffisant pour échouer ; et les échecs de compilation sont des échecs.**\n- **On est pas autorisé à écrire plus de code en production que celui nécessaire à faire fonctionner un test unitaire défaillant**\n\n### Exemple Cas de test TDD\n\nCreer un projet maven via IntelliJ, et créer une classe **Calculator**\n\n```java\npublic class Calculator {\n\n    public static Integer add(Integer n1, Integer n2){\n        return 0;\n    }\n\n}\n```\n\nAjouter les dépendances suivantes dans le pom.xml\n\n```xml\n       \u003cdependency\u003e\n            \u003cgroupId\u003eorg.junit.jupiter\u003c/groupId\u003e\n            \u003cartifactId\u003ejunit-jupiter-engine\u003c/artifactId\u003e\n            \u003cversion\u003e5.9.0\u003c/version\u003e\n            \u003cscope\u003etest\u003c/scope\u003e\n        \u003c/dependency\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eorg.junit.jupiter\u003c/groupId\u003e\n            \u003cartifactId\u003ejunit-jupiter-api\u003c/artifactId\u003e\n            \u003cversion\u003e5.9.0\u003c/version\u003e\n            \u003cscope\u003etest\u003c/scope\u003e\n        \u003c/dependency\u003e\n```\n\nEnsuite générer des tests unitaires de la classe Calculator\n\n```java\nclass CalculatorTest {\n\n    @Test\n    void add() {\n        Integer sum = Calculator.add(1,4);\n    }\n}\n```\n\n### 1- Appliquer la première étape du processus TDD\n\nIl faut créer un cas de test défaillant\n\n```java\nclass CalculatorTest {\n\n    @Test\n    void add() {\n        Integer sum = Calculator.add(1,4);\n        Assertions.assertEquals(1, sum);\n    }\n}\n```\n\nCe cas de test est défaillant parce qu’il retourne une erreur au lancement\n\n![testfail](https://user-images.githubusercontent.com/29838473/193371273-36fa9817-95b1-4186-a230-1042b0737bda.png)\n\n\n### 2- Appliquer la deuxième étape du processus TDD\n\nRé-écrire le cas de test pour le faire fonctionner\n\n```java\nclass CalculatorTest {\n\n    @Test\n    void add() {\n        Integer sum = Calculator.add(1,4);\n        Assertions.assertEquals(0, sum);\n    }\n}\n```\n\nIl fonctionne conformément à la logique de la classe\n\n![testokok](https://user-images.githubusercontent.com/29838473/193371521-51c6e0b6-c252-4b38-9f5a-fe3e81d050bb.png)\n\n\n### 3- Appliquer la dernière étape du processus TDD\n\nRefactoriser le code de la classe pour le rendre plus dynamique, simple, et éviter les doublons\n\n```java\npublic class Calculator {\n\n    public static Integer add(Integer n1, Integer n2){\n        return n1 + n2;\n    }\n\n}\n```\n\nFaire un cas de test qui doit fonctionner\n\n```java\nclass CalculatorTest {\n\n    @Test\n    void add() {\n        Integer sum = Calculator.add(1,4);\n        Assertions.assertEquals(5, sum);\n    }\n}\n```\n\nRésultat\n\n![testokokok](https://user-images.githubusercontent.com/29838473/193372243-6ca7e663-ceab-4671-8ef8-8cc0cfdc9eb8.png)\n\n# TDD\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felfn%2Ftdd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felfn%2Ftdd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felfn%2Ftdd/lists"}