Unittests in verschiedenen Programmiersprachen

01/04/2013 - 10:21 von Stefan Reuther | Report spam
Hallo,

aus C++-Unittest-Frameworks bin ich es gewohnt, beim Fehlschlagen eines
Tests eine Meldung zu erhalten, z.B. sinngemàß für ein assertEquals
"assertion failed: expecting f() == x::FOO, found 3 != 2". Also schön
aufgeschlüsselt, was da schiefgelaufen ist, inklusive Fangen von
Exceptions bei der Auswertung eines der Parameters. Kein Problem dank
Makros und Stringifizierungsoperator.

Nun bin ich auch in anderen Sprachen unterwegs und frage mich, wie man
das da realisieren kann.

Lisp? Kein Problem, entweder ein Makro oder (bei dynamischem Scope)
einfach die Ausdrücke quoten und ggf. 'eval'en.

Java? Zur Not bekommt man relativ simpel von der JVM einen Stacktrace,
um zu sehen, wo's geknallt hat. JUnit scheint das ansonsten so zu lösen,
dass sie dem Nutzer abverlangen, bei assertEquals eine Beschreibung
anzugeben bzw. die Ausdrücke quasi als Syntaxbaum in einer eigenen
Sprache abzufassen (Matcher). Gibt es besseres?

Aktuell bin ich in JavaScript unterwegs. Da gibt's zwar 'eval', man
könnte also 'assert("x 1")' schreiben, das beißt sich aber mit dem
lexikalischen Scope. Was ich an JavaScript-Unittest-Frameworks so
überflogen habe, beschàftigt sich ansonsten mehr mit dem Mocken von
XMLHttpRequest und sowas. Gibt es noch Tricks, die ich übersehe?

Ein Quelltext-Pràprozessor geht natürlich immer.


Stefan
 

Lesen sie die antworten

#1 Georg Bauhaus
01/04/2013 - 12:52 | Warnen spam
On 01.04.13 10:21, Stefan Reuther wrote:
Hallo,

aus C++-Unittest-Frameworks bin ich es gewohnt, beim Fehlschlagen eines
Tests eine Meldung zu erhalten, z.B. sinngemàß für ein assertEquals
"assertion failed: expecting f() == x::FOO, found 3 != 2". Also schön
aufgeschlüsselt, was da schiefgelaufen ist,

Java?



WIMRE, benutzt man die geeignete IDE, die so für JUnit-test programmiert
ist, dass sie den Betrachter vom JUnit-Fenster zum auslösenden Quellcode
zu lenken vermag?

Ähnliche fragen