-
Notifications
You must be signed in to change notification settings - Fork 1
Tests
Für alle Teile des Codes (Elemente, Solver, Funktionen, ...) sollten Tests vorhanden sein. Diese Tests müssen immer erfolgreich durchgeführt werden, so soll vermieden werden, dass durch Änderungen im Programmcode versehentlich andere Teile des Programms beeinträchtigt werden. Nach jeder größeren Änderung und auch zwischendurch sollte mit dem Kommando runTests
überprüft werden, ob der Code noch richtig arbeitet.
Die Tests sind zu verschiedenen Kategorien zusammengefasst und sollten bei der Einführung neuer Programmteile entsprechend erweitert werden:
-
AssemblerTests
: Testet, ob die verschiedenen Assembler richtige Ergebnisse liefern -
ElementTests
: Für jedes Element sollte mindestens ein Test zur Verfügung stehen, der eine statische Berechnung überprüft. Soll das Element auch mit anderen Berechnungsarten (dynamisch, harmonisch, ...) verwendet werden, sind dafür auch Tests anzulegen -
SolverTests
: Testet die Ergebnisse der einzelnen Solver (statisch, dynamisch, ...) -
ValidationTests
: Größere Testprobleme, die viele verschiedene Programmfunktionen enthalten
Prinzipiell sollte ein Test von so wenig Programmteilen wie möglich abhängen, um etwaige Fehler schnell eingrenzen zu können. Auch sollten die Tests in wenigen Sekunden durchgeführt werden können. Ausgenommen sind die ValidationTests
, bei denen auch größere Probleme getestet werden.
Im Ordner tests
befindet sich das Skript runTests
, mit dem alle Tests auf einmal durchgeführt werden können. Wird beim Aufruf der Parameter small
verwendet, werden alle Tests bis auf die Validierungstests durchgeführt, der Parameter validation
startet nur diese.
Einzelne Testskripte, die von matlab.unittest.TestCase
abgeleitet sind, können mit run(SKRIPTNAME)
gestartet werden.
Matlab bietet vorgefertigte Funktionen, die das Testen von Programmteilen erlauben. Die Testskripte müssen von der Klasse matlab.unittest.TestCase
erben und die Methoden müssen mit dem Parameter (Test)
versehen werden. Jeder Test ist eine Funktion und hat den Parameter TestCase
als Übergabeparameter. Ein simpler Test könnte zum Beispiel so aussehen:
function myTest(testCase)
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.AbsoluteTolerance
actualResult = 1 + 1;
expectedResult = 2;
testCase.assertThat(actualResult, IsEqualTo(expectedResult, ...
'Within', AbsoluteTolerance(1e-7)))
end
Hier wird geprüft ob das erwartete Ergebnis expectedResult
mit dem berechneten Ergebis actualResult
mit einer absoluten Toleranz von 1e-7 übereinstimmt.