85

/ 100

GradeB

A well-known project done right. Strong docs and solid engineering throughout.

Top 22% of 5,156 graded repos

A modern, fast and flexible .NET testing framework

Top fixes

Highest-impact changes first, ranked by point weight

11 to address
  1. 1
    Tests18pt

    Wire your tests to a documented command (e.g. a test script in your build config) so the suite is reproducible.

  2. 2
    CI/CD14pt

    Add a step like `run: npm test`, `run: pytest`, or `run: tox` to your workflow file.

  3. 3
    CI/CD14pt

    Add a lint step to catch style issues automatically.

  4. 4
    CI/CD14pt

    Add `tsc --noEmit`, `mypy`, or `cargo check` to catch type errors before they merge.

Working through the fixes? Let every push regrade itself.

The free GitHub App rescans this repo on every push and posts the grade as a commit check, so the score climbs without coming back to rescan by hand.

Install the GitHub App

Scorecard

Every check, grouped by category and sorted worst-first

Documentation

93

Contributing guide5pt72

CONTRIBUTING guide found.

Install and run instructions9pt90

README documents how to install the project.

README12pt100

README is present.

License6pt100

Licensed under MIT.

Engineering

77

CI/CD14pt57

CI is configured (.github/workflows/deploy-pages-test.yml).

Reproducibility6pt70

Lockfile present (docs/yarn.lock). Installs are reproducible.

Tests18pt80

Test files detected (TUnit.Analyzers.Tests/AbstractTestClassWithDataSourcesAnalyzerTests.cs).

Linting and formatting5pt100

.NET formatting configured (.editorconfig).

Issue and PR templates6pt100

Issue or PR templates present.

Project health

94

Housekeeping3pt60

.gitignore present.

Dependency manifest6pt100

Dependency manifest found (TUnit.Analyzers.CodeFixers/TUnit.Analyzers.CodeFixers.csproj).

Repository metadata5pt100

Repository has a description.

Activity5pt100

Actively maintained (pushed within the last month).

Repository health signals

Activity, community, and responsiveness at scan time

Activity

  • -
    Commits (30d / 90d)
  • 127
    Forks
  • 197
    Releaseslatest 8mo ago

Community

  • 71% - Fair
    Community health
  • 1 bus factorlow
    author own >50% of commits
  • 3,892
    Watchers

Responsiveness

  • -
    Median issue response
  • <1h
    Median PR merge time
  • 19
    Open issues
Repository files132 root entries
  • .claude
  • .config
  • .devcontainer
  • .github
    Good: CONTRIBUTING guide found.
    Issue: CONTRIBUTING guide contents could not be read (−28 pts vs a readable file).Fix: Move the file to the repo root or docs/CONTRIBUTING.md so its setup, style, test, and PR sections can be graded.
    Good: CI is configured (.github/workflows/deploy-pages-test.yml).
    Good: Issue or PR templates present.
  • .specify
  • .vscode
  • assets
  • docs
    Good: Lockfile present (docs/yarn.lock). Installs are reproducible.
  • examples
  • scripts
  • SharedTestHelpers
  • Snapshots
  • tools
  • TUnit
  • TUnit.Analyzers
  • TUnit.Analyzers.CodeFixers
    Good: Dependency manifest found (TUnit.Analyzers.CodeFixers/TUnit.Analyzers.CodeFixers.csproj).
  • TUnit.Analyzers.Roslyn414
  • TUnit.Analyzers.Roslyn44
  • TUnit.Analyzers.Roslyn47
  • TUnit.Analyzers.Tests
    Good: Test files detected (TUnit.Analyzers.Tests/AbstractTestClassWithDataSourcesAnalyzerTests.cs).
  • TUnit.Aspire
  • TUnit.Aspire.Core
  • TUnit.Aspire.Tests
  • TUnit.Aspire.Tests.ApiService
  • TUnit.Aspire.Tests.AppHost
  • TUnit.AspNetCore
  • TUnit.AspNetCore.Analyzers
  • TUnit.AspNetCore.Analyzers.CodeFixers
  • TUnit.AspNetCore.Analyzers.Roslyn414
  • TUnit.AspNetCore.Analyzers.Roslyn44
  • TUnit.AspNetCore.Analyzers.Roslyn47
  • TUnit.AspNetCore.Analyzers.Tests
  • TUnit.AspNetCore.Core
  • TUnit.AspNetCore.Tests
  • TUnit.AspNetCore.Tests.MinimalApi
  • TUnit.AspNetCore.Tests.WebApp
  • TUnit.Assertions
  • TUnit.Assertions.Analyzers
  • TUnit.Assertions.Analyzers.CodeFixers
  • TUnit.Assertions.Analyzers.CodeFixers.Tests
  • TUnit.Assertions.Analyzers.Tests
  • TUnit.Assertions.FSharp
  • TUnit.Assertions.Should
  • TUnit.Assertions.Should.SourceGenerator
  • TUnit.Assertions.Should.SourceGenerator.Tests
  • TUnit.Assertions.Should.Tests
  • TUnit.Assertions.SourceGenerator
  • TUnit.Assertions.SourceGenerator.Tests
  • TUnit.Assertions.Tests
  • TUnit.Core
  • TUnit.Core.SourceGenerator
  • TUnit.Core.SourceGenerator.Roslyn414
  • TUnit.Core.SourceGenerator.Roslyn44
  • TUnit.Core.SourceGenerator.Roslyn47
  • TUnit.Core.SourceGenerator.Tests
  • TUnit.Core.Tests
  • TUnit.Engine
  • TUnit.Engine.Tests
  • TUnit.Example
  • TUnit.Example.Asp.Net
  • TUnit.Example.Asp.Net.TestProject
  • TUnit.Example.FsCheck.TestProject
  • TUnit.FsCheck
  • TUnit.IntegrationTests
  • TUnit.Logging.Microsoft
  • TUnit.Mocks
  • TUnit.Mocks.Analyzers
  • TUnit.Mocks.Analyzers.Tests
  • TUnit.Mocks.Assertions
  • TUnit.Mocks.Benchmarks
  • TUnit.Mocks.Http
  • TUnit.Mocks.Http.Tests
  • TUnit.Mocks.Logging
  • TUnit.Mocks.Logging.Tests
  • TUnit.Mocks.SourceGenerator
  • TUnit.Mocks.SourceGenerator.Roslyn414
  • TUnit.Mocks.SourceGenerator.Roslyn44
  • TUnit.Mocks.SourceGenerator.Roslyn47
  • TUnit.Mocks.SourceGenerator.Tests
  • TUnit.Mocks.Tests
  • TUnit.OpenTelemetry
  • TUnit.OpenTelemetry.Tests
  • TUnit.Performance.Tests
  • TUnit.PerformanceBenchmarks
  • TUnit.Pipeline
  • TUnit.Playwright
  • TUnit.Profile
  • TUnit.PublicAPI
  • TUnit.RpcTests
  • TUnit.SourceGenerator.Benchmarks
  • TUnit.SourceGenerator.IncrementalTests
  • TUnit.Templates
    Issue: Build artifacts or local files may be committed (TUnit.Templates/.idea/.idea.TUnit.dir) (−40 pts).Fix: Remove them and add to .gitignore.
  • TUnit.Templates.Tests
  • TUnit.TestProject
  • TUnit.TestProject.FSharp
  • TUnit.TestProject.Library
  • TUnit.TestProject.VB.NET
  • TUnit.UnitTests
  • .editorconfig
    Good: .NET formatting configured (.editorconfig).
  • .gitattributes
  • .gitignore
    Good: .gitignore present.
  • AGENTS.md
  • CLAUDE.md
  • Directory.Build.props
  • Directory.Build.targets
  • Directory.Packages.props
  • GitVersion.yml
  • global.json
  • Library.props
  • Library.targets
  • LICENSE
    Good: Licensed under MIT.
  • Polyfill.targets
  • README.md
    Good: README is present.
    Good: README is well structured with multiple sections.
    Good: README includes screenshots or visuals. Great for first impressions.
    Good: README has code examples.
    Good: README links to a live demo or deployed app.
    Good: README includes status badges.
    Good: README documents how to install the project.
    Good: README documents how to run the project.
  • renovate.json
  • Roslyn.props
  • run-all-engine-tests.ps1
  • run-aot-tests.ps1
  • run-reflection-tests.ps1
  • run-singlefile-tests.ps1
  • run-source-generation-tests-verbose.ps1
  • run-source-generation-tests.ps1
  • SourceGenerationDebug.props
  • StringMatchesAssertion.patch
  • strongname.snk
  • TestLibrary.props
  • TestLibrary.targets
  • TestProject.props
  • TestProject.targets
  • TUnit.CI.slnx
  • TUnit.Dev.slnx
  • TUnit.props
  • TUnit.slnx
RepoGrade badge preview

Add this badge to your README

It updates automatically each time the repo is re-graded.

[![RepoGrade](https://www.repo-grade.com/api/badge/thomhurst/tunit)](https://www.repo-grade.com/report/thomhurst/tunit)

More graded C# repos