tng/archunit

A Java architecture test library, to specify and assert architecture rules in plain Java

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 14 minutes ago
Added to GitGenius on September 18th, 2026
Created on April 21st, 2017
Open Issues & Pull Requests: 171 (+0)
GitHub issues: Enabled
Number of forks: 350
Total Stargazers: 3,838 (+0)
Total Subscribers: 49 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 36.1 hours
Mean response time: 61.7 days
90th percentile: 179.1 days
Tracked items: 87

Most active contributors

Sign in to see contributor activity.

How this project is maintained

98% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 60% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 57
New in 7 days: 1
Closed in 7 days: 1
Avg open age: 549 days
Stale 30+ days: 52
Stale 90+ days: 44

Recent activity

Opened in 7 days: 1
Closed in 7 days: 1
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • enhancement (7)
  • help wanted (5)
  • good start to contributing (4)
  • cleanup (2)
  • topic:junit (2)
  • bug (1)
  • on hold (1)
  • topic:core (1)

Most active issues this week

Detailed Description

ArchUnit is a Java architecture test library that checks dependencies between packages and classes, layers and slices, and detects cyclic dependencies by analyzing Java bytecode and importing classes into a code structure.

The problem ArchUnit solves is the difficulty of enforcing architectural constraints and coding rules across a codebase as it grows. Rather than relying on code reviews or documentation, ArchUnit lets developers write explicit architecture tests using plain Java and any standard unit testing framework. It works by analyzing compiled Java bytecode, building an in-memory representation of the codebase's structure, then allowing developers to query and assert rules against that structure using a fluent API.

Teams should adopt ArchUnit when they want to prevent architectural decay and enforce layering, dependency direction, and naming conventions automatically. It suits projects of any size where maintaining clear separation of concerns matters, particularly those with multiple modules or layers. The tool integrates directly into existing test suites, requiring no special build configuration beyond adding the library as a dependency.

Development activity shows consistent engagement with the codebase. The project maintains an active issue tracker where problems are addressed. Pull requests are regularly reviewed and merged, indicating ongoing maintenance. Documentation is kept current through updates to the user guide and example repositories. The maintainers respond to community contributions and incorporate feedback into releases.