{"id":25813582,"url":"https://github.com/sdley/unittest-googletruth","last_synced_at":"2026-05-12T11:43:15.269Z","repository":{"id":278469433,"uuid":"935719085","full_name":"sdley/UnitTest-GoogleTruth","owner":"sdley","description":"Découvrir et utiliser Google Truth pour écrire des tests unitaires plus expressifs en Java.","archived":false,"fork":false,"pushed_at":"2025-02-20T20:10:00.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T09:37:16.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/sdley.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":"2025-02-19T22:50:37.000Z","updated_at":"2025-02-20T20:10:03.000Z","dependencies_parsed_at":"2025-02-20T00:24:54.292Z","dependency_job_id":"711e927f-28fd-4454-b3f7-eb12757db5c9","html_url":"https://github.com/sdley/UnitTest-GoogleTruth","commit_stats":null,"previous_names":["sdley/unittest-googletruth"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sdley/UnitTest-GoogleTruth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdley%2FUnitTest-GoogleTruth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdley%2FUnitTest-GoogleTruth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdley%2FUnitTest-GoogleTruth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdley%2FUnitTest-GoogleTruth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdley","download_url":"https://codeload.github.com/sdley/UnitTest-GoogleTruth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdley%2FUnitTest-GoogleTruth/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32938000,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2025-02-28T02:39:02.680Z","updated_at":"2026-05-12T11:43:15.252Z","avatar_url":"https://github.com/sdley.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UnitTest-GoogleTruth\nDécouvrir et utiliser Google Truth pour écrire des tests unitaires plus expressifs en Java.\n\n## Notes\n\n### Notion de TestInstance\nL'annotation @TestInstance(TestInstance.Lifecycle.PER_METHOD) est utilisée dans JUnit 5 pour contrôler la manière dont une instance de classe de test est créée pour chaque test.\n\nPar défaut, chaque test a sa propre instance\nPar défaut, JUnit 5 crée une nouvelle instance de la classe de test pour chaque test. Cela signifie que chaque méthode de test s’exécute dans une nouvelle instance de la classe de test, garantissant ainsi l'isolation entre les tests.\n\nExemple sans @TestInstance (comportement par défaut) :\n```java\nclass MyTest {\n\n    private int counter = 0;\n\n    @Test\n    void test1() {\n        counter++;\n        System.out.println(\"Test 1 : \" + counter);  // Affiche \"Test 1 : 1\"\n    }\n\n    @Test\n    void test2() {\n        counter++;\n        System.out.println(\"Test 2 : \" + counter);  // Affiche \"Test 2 : 1\" (nouvelle instance)\n    }\n}\n```\nIci, counter est réinitialisé à 0 pour chaque test, car JUnit crée une nouvelle instance de MyTest à chaque exécution.\n\nAvec @TestInstance(TestInstance.Lifecycle.PER_METHOD)\nL'option Lifecycle.PER_METHOD indique explicitement que chaque test aura une nouvelle instance de la classe de test (c’est le comportement par défaut de JUnit 5).\n\nExemple :\n```java\n@TestInstance(TestInstance.Lifecycle.PER_METHOD)  // Comportement par défaut\nclass MyTest {\n    private int counter = 0;\n\n    @Test\n    void test1() {\n        counter++;\n        System.out.println(\"Test 1 : \" + counter);  // Affiche \"Test 1 : 1\"\n    }\n\n    @Test\n    void test2() {\n        counter++;\n        System.out.println(\"Test 2 : \" + counter);  // Affiche \"Test 2 : 1\" (nouvelle instance)\n    }\n}\n```\n\nCe comportement garantit que chaque test est isolé et indépendant des autres.\n\n#### Quand utiliser @TestInstance(TestInstance.Lifecycle.PER_CLASS) ?\nSi on remplace PER_METHOD par PER_CLASS :\n```java\n@TestInstance(TestInstance.Lifecycle.PER_CLASS)\nclass MyTest {\n    private int counter = 0;\n\n    @Test\n    void test1() {\n        counter++;\n        System.out.println(\"Test 1 : \" + counter);  // Affiche \"Test 1 : 1\"\n    }\n\n    @Test\n    void test2() {\n        counter++;\n        System.out.println(\"Test 2 : \" + counter);  // Affiche \"Test 2 : 2\"\n    }\n}\n```\n\n- Ici, une seule instance de la classe de test est créée pour tous les tests.\n- Cela permet de partager des états entre les tests.\n- Inconvénient : Si un test modifie l’état de la classe, il peut impacter les autres tests.\n\n- ✅ PER_METHOD (par défaut) :\n    - Une nouvelle instance de la classe de test est créée pour chaque méthode de test.\n    - Isolation garantie : chaque test s'exécute indépendamment.\n    - Utilisé quand l’état ne doit pas être partagé entre les tests.\n\n- ✅ PER_CLASS :\n    - Une unique instance de la classe de test est utilisée pour tous les tests.\n    - L’état peut être partagé entre les tests.\n    - Utilisé lorsque l’initialisation est coûteuse et que les tests peuvent partager des ressources.\n\nDans notre cas (ListUtilsTest), PER_METHOD garantit que chaque test s’exécute indépendamment, sans risque d’impact d’un test sur un autre. 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdley%2Funittest-googletruth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdley%2Funittest-googletruth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdley%2Funittest-googletruth/lists"}