tryng heraus einige smalltalk + TDD + "good practices" Ich habe in ein bisschen hässlich Block laufen:Smalltalk und Assertions
Wie mache ich eine Behauptung in GNU Smalltalk?
Ich suche nur für einen einfachen ifFalse: [Die]
Art der Sache
tryng heraus einige smalltalk + TDD + "good practices" Ich habe in ein bisschen hässlich Block laufen:Smalltalk und Assertions
Wie mache ich eine Behauptung in GNU Smalltalk?
Ich suche nur für einen einfachen ifFalse: [Die]
Art der Sache
Dies ist der Code für assert ist: von Squeak (was ich empfehlen Sie lieber als GNU verwenden):
assert: aBlock
"Throw an assertion error if aBlock does not evaluates to true."
aBlock value
ifFalse: [AssertionFailure signal: 'Assertion failed']
Es ist einfach . In Ihrer Testmethode, die Sie schreiben:
self assert: 1 + 1 = 2
Aber zuerst müssen Sie eine Testklasse als Unterklasse von Testcase (in Squeak) zu schaffen, zum Beispiel:
TestCase subclass: #MyTest
Hier können Sie Testmethoden schreiben, die Namen müssen immer mit 'Test', zum Beispiel starten:
testBasicArithmetics
self assert: 1 + 1 = 2
Offensichtlich, dass "Matrix nicht versteht # assert:". – Tordek
Ja, Sie müssen natürlich eine Testklasse machen und dort Aussagen in Testmethoden machen. Siehe mein Update. –
Entschuldigung, es war ein Missverständnis: Ich meine keine Unit-Test-Behauptungen, sondern Design-by-Contract-Behauptungen. (IE, Pre/Post-Condition Checking innerhalb der Methode.) – Tordek
sowie Selbst assert: [... einiger Block]
funktioniert für Blöcke & Nicht-Blöcke, da das Senden von #value an Object selbst zurückgibt.
Es wurde oben vorgeschlagen #assert:
-Object
, hinzuzufügen, sondern würde ich #assert
zu BlockClosure
hinzufügen (oder was auch immer [] class
ist in GNU Smalltalk).
assert
this value ifFalse: [AssertionFailure signal: 'Assertion failed']
und damit als in
[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.
so weiter verwenden.
Warum nicht eine Methode auf Booleans? '(Wert> 0) sicherlich. Ich denke, weil der Test eine Nicht-Boolean oder eine Ausnahme erzeugen könnte, obwohl es nicht wie die Smalltalk-Art scheint, sich viel darum zu sorgen. –
Warum würden Sie die GNU-Version nicht empfehlen? – Eyvind
Mangel an Unterstützung - Quietschen hat eine beteiligtere Gemeinschaft und Squeak macht mehr Spaß. –
Mehr Unterstützung kommt von mehr Leuten, die es benutzen. Und GNU Smalltalk entwickelt sich wirklich gut. Es gibt ziemlich viele Leute, mit Paolo Bonzini als Haupttruppe. –