Skip to content

Latest commit

 

History

History
161 lines (140 loc) · 4.11 KB

File metadata and controls

161 lines (140 loc) · 4.11 KB

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.