junit-team/junit-framework

✅ The programmer-friendly testing framework for Java and the JVM

6
Hotness score
89
Reliability score
7,049
Stars
over 11 years
Age
0
Published reviews
0
Questions

Scores

Hotness and reliability

The two headline scores, measured daily, with 30, 90, and 180 day views.

Hotness score

Jul 19, 2026

Current6

Previous15

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Hotness formula

40% Hot today + 40% Hot this week + 20% Breakout.

  • 40% Hot today: 1
  • 40% Hot this week: 6
  • 20% Breakout: 1
  • Stars gained: 1d: 0
  • Stars gained: 7d: 1
  • Stars gained: 14d: 7
  • Stars gained: 30d: 26
  • Stars gained: 90d: 87

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Jul 19, 2026

Current89

Previous86

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Reliability formula

30% Continuity + 30% Closure + 20% Shipping + 10% Liveness + 10% Support burden.

  • 30% Continuity: 93
  • 30% Closure: 97
  • 20% Shipping: 74
  • 10% Liveness: 100
  • 10% Support burden: 71

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-19).

Continuity30% of headline93

Activity on 86 of 90 tracked days in the last 90 and 29 of 30 in the last 30.

Closure30% of headline97

Merged 216 of 231 PRs opened and closed 29 of 21 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline74

7 releases in the last 180 days, 5 in the last 90 and 2 in the last 30 — a steady cadence scores highest.

Liveness10% of headline100

Last push 0 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline71

103 open issues against 7,049 stars — about 15 open issues per 1,000 stars. Lighter backlogs score higher.

Adoption confidence100

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality88

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score13

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)97%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)92%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)74

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)7%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Topics

Explore related topics

Jump into the topic listings this repository belongs to.

Measured history

Project metrics

Weekly GitHub totals with 30, 90, and 180 day views.

Weekly star gains

Jul 19, 2026

Current1

Previous7

Weekly star gains

1260
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Cumulative stars

Jul 19, 2026

Current7,049

Previous7,048

Cumulative total

7,0493,5250
Full metrics details

Running total of the GitHub GraphQL stargazer count over time (not weekly deltas), reconstructed from starredAt events and totalCount in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Jul 19, 2026

Current0

Previous0

Weekly total

630
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

179 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Jul 19, 2026

Current1

Previous0

Weekly total

950
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

179 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Jul 19, 2026

Current26

Previous16

Weekly total

28140
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

179 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Jul 19, 2026

Current26

Previous15

Weekly total

29150
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

179 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Jul 19, 2026

Current24

Previous15

Weekly total

25130
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

179 observed daily rows. Missing days are not fabricated.

DateValue

Issue close ratio (daily)

Jul 3, 2026

Current0.00

Previous0.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is issues closed that day ÷ issues opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more issues than arrived that day.

3.001.500.00
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

42 observed daily rows. Missing days are not fabricated.

Per-day formula: issues closed that day ÷ issues opened that day; blank when nothing was opened (a gap, not a zero).

DateIssues openedIssues closedStored score

Pull request close ratio (daily)

Jul 19, 2026

Current0.00

Previous1.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is pull requests closed that day ÷ pull requests opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more pull requests than arrived that day.

6.003.000.00
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

158 observed daily rows. Missing days are not fabricated.

Per-day formula: pull requests closed that day ÷ pull requests opened that day; blank when nothing was opened (a gap, not a zero).

DatePRs openedPRs closedStored score

Releases

Jul 19, 2026

Current0

Previous1

Weekly total

210
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue

Project Overview

JUnit 5 is the home repository for the modern JUnit testing stack, including the platform and Jupiter model used in current Java test suites. You use it to structure unit, integration, and parameterized tests with a standard ecosystem path that integrates well with mainstream JVM build tooling.

From project information, releases, user guide, javadocs, and samples are all first-class resources, and the build process uses a recent JDK baseline with Gradle toolchains. That combination matters because your team can align contributor environments and CI in a predictable way.

You can treat JUnit 5 as a durable default for Java test authoring across services and libraries. It is not an early-stage framework; your team gets well-documented extension points and clear migration/contribution channels.

Key Challenges Addressed

A major testing challenge is keeping test structure expressive without hand-rolled harness code. JUnit 5 addresses that with annotations and lifecycle semantics that make setup, teardown, and scenario organization explicit.

Another challenge is version and runtime consistency across local and CI environments. With strong Gradle integration and toolchain-aware build setup, your team can standardize execution paths and reduce environment drift.

You also need extensibility for custom assertions, conditional execution, and framework integrations. JUnit 5’s extension model helps your team add behavior without rewriting core test infrastructure.

Getting Started

You can start by adding JUnit Jupiter dependencies through your build tool and enabling test platform execution in Gradle or Maven. If your team builds JUnit itself from source, project guidance indicates JDK 21 for that build workflow and toolchain-based handling for additional JDK needs.

For a first useful workflow, write a small Jupiter test class with one simple assertion, one parameterized case, and one lifecycle callback. Then run tests in CI with the same entry command used locally. Your first sharp edge is mixed legacy engine configuration; keep engine choices explicit to avoid silent test exclusion.

Features and Use Cases

JUnit 5 supports regular unit tests, parameterized tests, dynamic test generation patterns, and extension-based customization. You can use it for domain logic verification, adapter contracts, and regression suites around refactors.

In larger repos, your team can define shared testing extensions and conventions so module-level tests remain consistent. JUnit’s modular approach is useful when different subprojects need different levels of testing abstraction while staying on one platform.

You can also integrate code coverage and CI pipelines directly around JUnit 5 runs, as shown by project references to JaCoCo and CI workflows.

Ecosystem and Dependencies

JUnit 5 sits at the center of the Java testing ecosystem and pairs naturally with build tools such as Gradle and Maven. The repository surfaces official documentation, javadocs, release notes, sample projects, and active issue tracking, which are the resources your team needs for steady upgrades.

Build and CI integration details are also explicit, including Gradle Wrapper usage and build scan workflows. That helps your team move from local tests to reliable CI execution without custom scaffolding.

Keep official resources in your onboarding docs: junit.org, repository, user guide, and release notes.

Architectural Overview

JUnit 5 uses a modular architecture with a platform layer and the Jupiter programming model. Your tests target Jupiter APIs while tooling integrates through the platform layer, which helps keep framework concerns separated from test intent.

This architecture matters when your team needs extension-based customization, selective test execution, and integration with multiple build and IDE environments. You can evolve test capabilities without replacing the entire framework stack.

For long-lived codebases, modularity helps during upgrades: your team can adopt new capabilities incrementally while preserving existing test behavior with clear engine/platform boundaries.

Pros and Cons

JUnit 5 gives your team a modern, modular testing model with strong documentation and straightforward build integration. You can keep tests readable, reusable, and extensible across many project types.

The trade-off is migration and configuration work when legacy JUnit 4 assumptions exist in large repositories. Mixed-engine setups can become confusing if your build scripts are not explicit.

You should also enforce shared conventions for annotations, extension usage, and naming patterns. Without that governance, test suites can drift in style and maintainability even with a strong framework.

Comparison and Alternatives

You can compare JUnit 5 with TestNG, Spock, and JUnit 4. JUnit 5 usually fits teams that want current Java testing conventions and extension flexibility while staying close to standard JVM tooling.

Best overall alternative: TestNG, because you get a mature JVM test framework with flexible execution configuration and long-standing ecosystem usage.

You use JUnit 5 when your team needs a modern Java testing baseline with modular architecture, strong docs, and clean integration with mainstream build tooling. It is a practical default for most JVM projects that need extensibility without custom framework work.

Your trade-offs are mostly operational: manage migration from older test styles and keep engine/configuration choices explicit. Keep junit.org, the GitHub repository, and the user guide embedded in your team testing standards.

Join the conversation

Reviews · Questions · Posts

Share what you know about junit-framework — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting junit-framework.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to junit-team/junit-framework. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run junit-framework in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses junit-framework — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Java and Junit5 world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.