{"id":20651978,"url":"https://github.com/foiovituh/uva-tester","last_synced_at":"2025-10-04T00:50:13.336Z","repository":{"id":247885400,"uuid":"827079711","full_name":"foiovituh/uva-tester","owner":"foiovituh","description":"A minimalist Java library for effortless unit test execution 🍇","archived":false,"fork":false,"pushed_at":"2025-06-28T14:30:17.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-12T00:50:05.646Z","etag":null,"topics":["java","java-annotations","java-library","maven","testing","unit-testing","unit-tests","uva","uva-tester","uvatester"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/foiovituh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-11T01:42:36.000Z","updated_at":"2025-06-28T14:30:20.000Z","dependencies_parsed_at":"2024-07-11T05:28:27.473Z","dependency_job_id":"7ac3077a-ded2-48a9-a37a-77468791b429","html_url":"https://github.com/foiovituh/uva-tester","commit_stats":null,"previous_names":["foiovituh/uva-tester"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/foiovituh/uva-tester","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foiovituh%2Fuva-tester","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foiovituh%2Fuva-tester/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foiovituh%2Fuva-tester/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foiovituh%2Fuva-tester/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foiovituh","download_url":"https://codeload.github.com/foiovituh/uva-tester/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foiovituh%2Fuva-tester/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278250085,"owners_count":25955840,"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","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["java","java-annotations","java-library","maven","testing","unit-testing","unit-tests","uva","uva-tester","uvatester"],"created_at":"2024-11-16T17:31:17.158Z","updated_at":"2025-10-04T00:50:13.306Z","avatar_url":"https://github.com/foiovituh.png","language":"Java","readme":"# UVATester 🍇\n![GitHub License](https://img.shields.io/github/license/foiovituh/uva-tester)\n\n![logo](https://github.com/foiovituh/uva-tester/assets/68431603/869607ca-68bc-4630-9a9a-4d4a0794dd82)\n\n\nA minimalist Java library for effortless unit test execution. Although functional, my main goal was to put my studies on annotation and reflection in Java into practice. It was also a fun challenge to develop a test library from scratch and without references.\n\n## Summary 📝\n- [UVATester 🍇](#uvatester-)\n  - [Summary 📝](#summary-)\n  - [How does it work? 💡](#how-does-it-work-)\n  - [Requirements 🔗](#requirements-)\n  - [Quick usage guide 📚](#quick-usage-guide-)\n      - [Installation:](#installation)\n      - [Mapping process:](#mapping-process)\n      - [Execution:](#execution)\n      - [Assertor:](#assertor)\n  - [Future plans 📌](#future-plans-)\n  - [Do you want help me? 👥](#do-you-want-help-me-)\n  - [License 🏳️](#license-️)\n\n## How does it work? 💡\nUVATester's main process can be summarized as follows:\n- Receiving the name of a test class, loading it dynamically via reflection.\n- Checking that the class has the `@TestClass` annotation.\n- Invoking each method in the class that has the `@TestMethod` annotation and follows certain criteria (for more details, see the \"Mapping process\" section).\n- If any problems occur during the execution of the tests, the details of the error will be logged and then the UVATester will be terminated.\n\n## Requirements 🔗\n\u003cb\u003eMandatory\u003c/b\u003e:\n- Java 17+\n- Maven 4.0.0+\n\n\u003cb\u003eOptional\u003c/b\u003e:\n- JitPack\n\n## Quick usage guide 📚\n#### Installation:\nAdd and download the following dependencies to your `pom.xml`:\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.github.foiovituh\u003c/groupId\u003e\n        \u003cartifactId\u003euva-tester\u003c/artifactId\u003e\n        \u003cversion\u003ev1.0-SNAPSHOT\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n---\n\n#### Mapping process:\nAnnotate your test class with `@TestClass`, and annotate your test methods with `@TestMethod`. The test methods should be static, return void, and have no arguments. For example:\n\n```java\n@TestClass\npublic class ShoppingTrolleyTest {\n    @TestMethod\n    public static void testEmptyShoppingTrolleyGuardingReturnsTrue() {\n    \tfinal var shoppingTrolley = new ShoppingTrolley();\n    \t\n    \tfinal var testName = \"testEmptyShoppingTrolleyGuardingReturnsTrue\";\n        final var testResult = shoppingTrolley.guardShoppingTrolley()\n        \t\t\u0026\u0026 Assertor.isNullOrEmpty(shoppingTrolley.getItems())\n        \t\t\t? \"pass\"\n        \t\t\t: \"failed\";\n        \n        Feedback.showResult(testName, testResult);\n    }\n}\n```\n\n---\n\n#### Execution:\nInstantiate a `UVATester` object using the test class name and invoke its `run()` method to execute all defined tests:\n```java\npublic class ShoppingTrolleyTestExecutor {\n    public static void main(String[] args) {\n        final var shoppingTrolleyTests = new UVATester(\n                ShoppingTrolleyTest.class.getName()\n        );\n        \n        shoppingTrolleyTests.run();\n    }\n}\n```\n\n---\n\n#### Assertor:\nYou can also use assertion methods that can be useful when developing tests. They are available in the class: `com.github.foiovituh.uvatester.utils.Assertor`. For example, the method:\n```java\npublic static boolean isWithinRange(int value, int min, int max) {\n    return value \u003e= min \u0026\u0026 value \u003c= max;\n}\n```\n\n## Future plans 📌\n- Add more methods to the Assertor class\n- Make it optional to close tests if one fails\n\n## Do you want help me? 👥\nIf you have any ideas or wish to contribute to the project, contact me on X (\u003ca href=\"https://x.com/ohtoaki\" target=\"_blank\"\u003e@ohtoaki\u003c/a\u003e) or send me a pull request :)\n\n## License 📄\nDistributed under the MIT License. See [`LICENSE`](LICENSE) for more information.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoiovituh%2Fuva-tester","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoiovituh%2Fuva-tester","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoiovituh%2Fuva-tester/lists"}