Modultestsoftware (meist „Test-Frameworks“, englisch Unit test frameworks) bezeichnet Frameworks zur Durchführung von Modultests (oft auch Komponententests genannt). Sie dienen dem Nachweis von Fehlern in einzelnen Komponenten (Modulen) einer Software, beispielsweise einzelnen Klassen. Nach jeder Änderung in einem Projekt, sollte durch Ablauf aller Testfälle nach Programmfehlern gesucht werden. Als Voraussetzung für Refactoring kommt ihnen besondere Bedeutung zu.
Modultestsoftware bzw. Test-Frameworks gibt es mittlerweile für fast jede Programmiersprache. Oft haben die Namen dieser Frameworks die Form xyzUnit (z. B. JUnit für Java, siehe unten). Testrahmen dienen dazu, den Quelltext besser und automatisch testen zu können. Damit kann nach Modifikationen am Quelltext relativ schnell festgestellt werden, ob die vorher erstellten Tests immer noch die erwarteten Ergebnisse haben.
Nach Art, Umfang und Lizenz unterscheidbare Testwerkzeuge für Ada schließen ein:
Time Partition Testing (TPT): Modellbasierter Modultest des physikalischen Modells als auch des Implementierungsmodells, ebenfalls für ASCET-DEVELOPER.
Für die Programmiersprache C gibt es verschiedene Implementationen, die sich hauptsächlich in ihrem Funktionsumfang, Lizenzen und Einsatzgebieten unterscheiden:
Unittest ist bei Dart in der Bibliothek unittest verfügbar.
DUnit ist eine Portierung von JUnit für Embarcadero Delphi. In der Version „Delphi 2005“ wurde es von Borland (später CodeGear, heute Embarcadero Technologies) als fester Bestandteil in die Entwicklungsumgebung aufgenommen.
JSUnit wurde von Edward Hieatt nach dem Vorbild JUnit gebaut und bietet manuelle wie auch komplett integrierte Tests für JavaScript mit browser- und betriebssystemübergreifenden Testservern. Die Entwickler von JSUnit empfehlen allerdings mittlerweile die Verwendung von Jasmine. Weitere Testframeworks für JavaScript sind YUI, mocha oder QUnit.
LingoUnit ist ein Framework für die interpretierte Skriptsprache Lingo in Macromedias Autorensystem Director, welches ebenfalls unter SourceForge geführt wird.
Test::Unit oder RUnit verfügbar.SUnit: Das vermutlich erste Framework zum Erstellen von Komponententests wurde von Kent Beck für die Programmiersprache Smalltalk geschrieben. Die Idee wurde schnell auf andere Programmiersprachen übertragen.
Das XCTest-Framework von Apple integriert Unittest nahtlos sowohl in Swift auf Kommandozeilenebene als auch in XCode.
Tcl enthält das Modul tcltest für Modultests. Auch andere Test-Frameworks wurden in Tcl geschrieben, bekannt ist etwa DejaGnu, mit dem der gcc getestet wird. Zudem kann man in wenigen Zeilen ein „Framework“ selbst erstellen:
proc test {command expected} {
catch {uplevel 1 $command} res
if {$res ne $expected} {
puts "$command->$res, not $expected"
}
}
Tests (in eigenen Quelldateien, oder direkt beim Code) sehen dann so aus: man gibt eine Anweisung und das erwartete Ergebnis an. Wenn ein unerwartetes Ergebnis ausgewertet wird, so wird dies angezeigt:
test {expr 3 + 4} 7
Tessy ist ein Werkzeug zum automatisierten Modultest von in C oder C++ geschriebener Software, besonders für Embedded Systeme.
TSQLUnit ist ein Framework für Unittests in Transact-SQL. Es hält sich an die Tradition des xUnit Frameworks, das es für viele Programmiersprachen gibt.
vbUnit: Das deutsche Unternehmen Maaß Computertechnik aus Bochum hat das xUnit-Framework für Visual Basic 6 implementiert. vbUnit ist nicht vollkommen Open Source. In der kostenpflichtigen Version 3 Professional erhält man das Unit Testing Framework für Visual Basic 6 inklusive eines Microsoft Visual Studio 6 Add-on. Die Basic-Version von vbUnit wird unter der GNU Lesser General Public License (LGPL) angeboten, das heißt, dass man zu dieser Version sowohl die kompilierten Komponenten als auch den Quellcode erhält. Der TestRunner und das Add-on für Microsofts Visual Studio 6 in der Professional-Ausgabe sind kostenpflichtig und nicht Open Source.