You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Programming Languages with TDD (Test-Driven Development) Support
This document lists programming languages that have dedicated testing frameworks or built-in unit testing capabilities, enabling Test-Driven Development (TDD).
🧩 General-Purpose & Multi-Paradigm
Language
Example Frameworks / TDD Support
Python
unittest, pytest, nose2, behave
Ruby
RSpec, Minitest, Cucumber
Java
JUnit, TestNG, Spock
C
Unity, Check, CuTest
C++
GoogleTest, Catch2, Boost.Test
C#
xUnit, NUnit, MSTest
Swift
XCTest, Quick, Nimble
Go
Built-in testing, Ginkgo, Testify
Rust
Built-in cargo test, criterion
D
Unit blocks, UnitTest, DUnit
Kotlin
JUnit5, Kotest, Spek
Scala
ScalaTest, Specs2, MUnit
Nim
unittest, testament
Crystal
Built-in Spec, Minitest.cr
Zig
Built-in testing support
Ada
AUnit
Fortran
pFUnit, FRUIT
COBOL
COBOLUnit
ABAP
ABAP Unit
Apex
Apex Test Classes
Pascal
FPCUnit, DUnitX
V
Built-in test runner
⚙️ Functional & Logic Programming
Language
Example Frameworks / TDD Support
Haskell
Hspec, QuickCheck, Tasty
Lisp / Common Lisp
FiveAM, Prove
Scheme
SRFI-64, RackUnit
Clojure
clojure.test, Midje
Racket
RackUnit
OCaml
OUnit, Alcotest, QCheck
F#
Expecto, FsUnit, NUnit
Standard ML
SMLUnit
ReasonML
bs-jest, Jest
Elixir
ExUnit
Erlang
EUnit, Common Test, PropEr
Elm
elm-test
PureScript
purescript-test-unit, QuickCheck
Unison
ucm test (integrated)
F*
FStar.UnitTest
Idris
Idris2.Test
Lean
Lean Unit
Coq
Proof checking = inherent TDD
Prolog
plunit
Mercury
unittest
💻 Scripting & Automation
Language
Frameworks
Bash
bats, shunit2
Zsh
Compatible with shell test tools
Awk
awkunit
Perl
Test::More, Test::Harness
Raku (Perl 6)
Built-in Test module
Tcl
tcltest
PowerShell
Pester
Batch
batUnit
AutoHotkey
AHKUnit
AppleScript
ASUnit
Lua
busted, lunatest, luaunit
🌐 Web, Frontend & Server-Side
Language
Frameworks
JavaScript
Jest, Mocha, Jasmine, Vitest
TypeScript
Jest, Mocha, AVA, Vitest
PHP
PHPUnit, Codeception, Behat
Dart
test, mockito, flutter_test
CoffeeScript
via JS frameworks
ActionScript
FlexUnit
Hack
HackTest
Haxe
munit, utest
Elm
elm-test
Svelte
Vitest, Playwright
Vue
Vitest, Jest
JSX
React test frameworks
🧠 Data Science & Analytical
Language
Frameworks
R
testthat, tinytest
Julia
Built-in Test
Matlab
matlab.unittest
Scilab
assert_checkequal, test_run
SQL
utPLSQL, pgTAP
PL/SQL
utPLSQL
SAS
sasUnit
🔩 Systems, Embedded & Hardware
Language
Frameworks
Assembly
Tested via C harnesses
Verilog
UVM, VUnit
VHDL
VUnit, OSVVM
SystemVerilog
UVM, SVUnit
P4
P4Unit
CUDA
GoogleTest wrappers
OpenCL
C-based test harnesses
Ada
AUnit
🧱 Domain-Specific & Niche
Language
Frameworks
Puppet
rspec-puppet
SaltStack
pytest-salt
Processing
JUnit integration
SuperCollider
UnitTest class
Rebol / Red
quick-test
Smalltalk
SUnit
Eiffel
AutoTest, EiffelStudio
Dylan
DylanTest
J
jtest
APL
testAPL
📚 Educational / Research
Language
Frameworks
Python
pytest
Ruby
RSpec
BASIC / VB.NET
NUnit
Smalltalk
SUnit
Haskell
Hspec
🧪 Experimental, Esoteric, and Emerging
Language
Frameworks / Notes
Zig
Built-in testing
Wren
wren-test
Unison
ucm test
Pony
ponytest
Rust
cargo test
All languages above have one or more active testing frameworks suitable for TDD workflows.