{"id":19842829,"url":"https://github.com/volodya-lombrozo/jtcop","last_synced_at":"2025-07-14T07:32:48.982Z","repository":{"id":62956075,"uuid":"559205243","full_name":"volodya-lombrozo/jtcop","owner":"volodya-lombrozo","description":"Maven Plugin for checking tests in Java projects","archived":false,"fork":false,"pushed_at":"2025-07-04T16:37:11.000Z","size":2210,"stargazers_count":22,"open_issues_count":23,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-04T17:41:40.410Z","etag":null,"topics":["best-practices","java","maven","quality","tests"],"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/volodya-lombrozo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2022-10-29T11:45:38.000Z","updated_at":"2025-07-04T16:36:37.000Z","dependencies_parsed_at":"2023-12-10T15:04:36.736Z","dependency_job_id":"e004fdc8-7d23-4a8e-86f9-dbbea86f24a0","html_url":"https://github.com/volodya-lombrozo/jtcop","commit_stats":{"total_commits":545,"total_committers":8,"mean_commits":68.125,"dds":0.2954128440366972,"last_synced_commit":"d9122a44f2d2d4fab75ddeabdde19eb09217114f"},"previous_names":["volodya-lombrozo/test-naming-conventions"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/volodya-lombrozo/jtcop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodya-lombrozo%2Fjtcop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodya-lombrozo%2Fjtcop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodya-lombrozo%2Fjtcop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodya-lombrozo%2Fjtcop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/volodya-lombrozo","download_url":"https://codeload.github.com/volodya-lombrozo/jtcop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodya-lombrozo%2Fjtcop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265255274,"owners_count":23735222,"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":["best-practices","java","maven","quality","tests"],"created_at":"2024-11-12T12:35:48.468Z","updated_at":"2025-07-14T07:32:48.954Z","avatar_url":"https://github.com/volodya-lombrozo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jtcop\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.volodya-lombrozo/jtcop-maven-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.volodya-lombrozo/jtcop-maven-plugin)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/volodya-lombrozo/jtcop/blob/main/LICENSE.txt)\n[![Hits-of-Code](https://hitsofcode.com/github/volodya-lombrozo/jtcop?branch=main\u0026label=Hits-of-Code)](https://hitsofcode.com/github/volodya-lombrozo/jtcop/view?branch=main\u0026label=Hits-of-Code)\n[![codecov](https://codecov.io/gh/volodya-lombrozo/jtcop/branch/main/graph/badge.svg)](https://codecov.io/gh/volodya-lombrozo/jtcop)\n\n\u003cimg src=\"logo-small.png\" align=\"right\"/\u003e\n\nThis repository was inspired by various articles and discussion threads (such as\nthese: [\"Unit test naming best practices\"](https://stackoverflow.com/questions/155436/unit-test-naming-best-practices)\nand [\"On The Layout of Tests\"](https://www.yegor256.com/2023/01/19/layout-of-tests.html)),\nand it consolidates knowledge on best practices for organizing and naming tests.\nThe purpose of jtcop is to enhance the clarity and maintainability of your\ntests. In other words, jtcop is a static linter similar to tools\nlike [CheckStyle](https://checkstyle.sourceforge.io)\nor [PMD](https://pmd.github.io), but with a focus on test best practices.\n\nYou can read more about checks and rules in the [docs](docs/README.md).\n\n## How to use\n\nThe plugin could be run using several approaches but for both of them you need\nat least **Maven 3.1.**+ and **Java 8+**.\n\n### Invoke the plugin directly\n\nIn order to use the plugin with the latest version just invoke the next command\nin the root of your project:\n\n```shell\nmvn com.github.volodya-lombrozo:jtcop-maven-plugin:check\n```\n\nor short version:\n\n```shell\nmvn jtcop:check\n```\n\nAfter that you will see the result of the plugin execution in the console. If\nyou want to use specific (older) version of the plugin, for example `0.1.16`,\njust run the next maven command with specified version:\n\n```shell\nmvn com.github.volodya-lombrozo:jtcop-maven-plugin:0.1.16:check\n```\n\nor snapshot version:\n\n```shell\nmvn com.github.volodya-lombrozo:jtcop-maven-plugin:1.0-SNAPSHOT:check\n```\n\n### Add the plugin to your `pom.xml`\n\nThe more convenient way to use the plugin is to add it to `pom.xml` file.\nIn order to do that, just add the next snippet to the `\u003cplugins\u003e` section:\n\n```xml\n\n\u003cplugin\u003e\n  \u003cgroupId\u003ecom.github.volodya-lombrozo\u003c/groupId\u003e\n  \u003cartifactId\u003ejtcop-maven-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e1.4.1\u003c/version\u003e\n  \u003cexecutions\u003e\n    \u003cexecution\u003e\n      \u003cgoals\u003e\n        \u003cgoal\u003echeck\u003c/goal\u003e\n      \u003c/goals\u003e\n    \u003c/execution\u003e\n  \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\nThe default plugin phase is `verify`, so you don't need to specify it directly,\nbut if you want to change it, just add the `phase` to `execution` section:\n\n```xml\n\n\u003cexecution\u003e\n  \u003cphase\u003etest\u003c/phase\u003e\n  \u003cgoals\u003e\n    \u003cgoal\u003echeck\u003c/goal\u003e\n  \u003c/goals\u003e\n\u003c/execution\u003e\n```\n\n## Skip the plugin execution\n\nIf you want to skip the plugin execution, just set the `skip` property to `true`\nin the configuration:\n\n```xml\n\n\u003cconfiguration\u003e\n  \u003cskip\u003etrue\u003c/skip\u003e\n\u003c/configuration\u003e\n```\n\n## How to Contribute\n\nFork repository, make changes, send us a pull request. We will review your\nchanges and apply them to the `main` branch shortly, provided they don't violate\nour quality standards. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolodya-lombrozo%2Fjtcop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolodya-lombrozo%2Fjtcop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolodya-lombrozo%2Fjtcop/lists"}