Language and Runtime
What language and runtime each unit testing framework targets.
Jest
JavaScript/TypeScript, running on Node.js, usable in any JS project regardless of build tooling.
Vitest
JavaScript/TypeScript, running on Node.js (or in-browser mode), built specifically to share configuration and transforms with a Vite-based project.
Mocha
JavaScript, running on Node.js, framework-agnostic and usable with any assertion or mocking library of choice.
pytest
Python, the dominant third-party test runner for the language, usable in any Python project regardless of framework.
JUnit
Java (and other JVM languages like Kotlin), deeply integrated with build tools like Maven and Gradle and IDEs like IntelliJ.
RSpec
Ruby, framework-agnostic though extremely closely associated with the Rails ecosystem’s testing culture.
Go testing
Go, part of the standard library itself (testing package), requiring no separate installation.
xUnit
C#/.NET, integrated with the standard dotnet test tooling and Visual Studio/Rider test explorers.
PHPUnit
PHP, the de facto standard test runner integrated into most PHP frameworks (Laravel, Symfony) and CI tooling.
Rust built-in tests
Rust, built directly into the language and cargo toolchain with no external dependency required.